LLM-Bridge 2.2.0__tar.gz → 2.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/PKG-INFO +1 -1
  2. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/claude/non_stream_claude_client.py +1 -0
  3. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/claude/stream_claude_client.py +1 -0
  4. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/claude_client.py +3 -0
  5. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/claude_client_factory.py +7 -1
  6. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/resources/model_prices.json +62 -50
  7. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/pyproject.toml +1 -1
  8. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/single/config.py +4 -3
  9. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/uv.lock +1 -1
  10. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.gitattributes +0 -0
  11. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.github/workflows/pypi-publish.yaml +0 -0
  12. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.github/workflows/python-test.yaml +0 -0
  13. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.gitignore +0 -0
  14. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.run/batch.run.xml +0 -0
  15. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.run/pytest.run.xml +0 -0
  16. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/.run/single.run.xml +0 -0
  17. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/LICENSE +0 -0
  18. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/README.md +0 -0
  19. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/__init__.py +0 -0
  20. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/__init__.py +0 -0
  21. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/chat_client.py +0 -0
  22. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/__init__.py +0 -0
  23. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/claude/__init__.py +0 -0
  24. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/claude/claude_response_handler.py +0 -0
  25. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/claude/claude_token_counter.py +0 -0
  26. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/gemini/__init__.py +0 -0
  27. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/gemini/gemini_response_handler.py +0 -0
  28. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/gemini/gemini_token_counter.py +0 -0
  29. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/gemini/non_stream_gemini_client.py +0 -0
  30. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/gemini/stream_gemini_client.py +0 -0
  31. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/http_error.py +0 -0
  32. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_completion/__init__.py +0 -0
  33. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_completion/non_stream_openai_completion_client.py +0 -0
  34. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_completion/stream_openai_completion_client.py +0 -0
  35. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_responses/__init__.py +0 -0
  36. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_responses/non_stream_openai_responses_client.py +0 -0
  37. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_responses/openai_responses_response_handler.py +0 -0
  38. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/openai_responses/stream_openai_responses_client.py +0 -0
  39. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/xai/__init__.py +0 -0
  40. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/xai/non_stream_xai_client.py +0 -0
  41. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/implementations/xai/stream_xai_client.py +0 -0
  42. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/__init__.py +0 -0
  43. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/gemini_client.py +0 -0
  44. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/openai_completion_client.py +0 -0
  45. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/openai_responses_client.py +0 -0
  46. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/client/model_client/xai_client.py +0 -0
  47. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/__init__.py +0 -0
  48. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/__init__.py +0 -0
  49. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/chat_client_factory.py +0 -0
  50. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/chat_message_converter.py +0 -0
  51. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/media_processor.py +0 -0
  52. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/__init__.py +0 -0
  53. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/gemini_client_factory.py +0 -0
  54. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/openai_completion_client_factory.py +0 -0
  55. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/openai_responses_client_factory.py +0 -0
  56. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_client_factory/xai_client_factory.py +0 -0
  57. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/__init__.py +0 -0
  58. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/claude_message_converter.py +0 -0
  59. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/gemini_message_converter.py +0 -0
  60. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/openai_completion_message_converter.py +0 -0
  61. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/openai_responses_message_converter.py +0 -0
  62. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/chat_generate/model_message_converter/xai_message_converter.py +0 -0
  63. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/file_fetch.py +0 -0
  64. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/message_process/__init__.py +0 -0
  65. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/message_process/code_file_extensions.py +0 -0
  66. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/message_process/document_processor.py +0 -0
  67. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/message_process/file_type_checker.py +0 -0
  68. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/message_process/message_processor.py +0 -0
  69. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/logic/model_prices.py +0 -0
  70. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/resources/__init__.py +0 -0
  71. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/__init__.py +0 -0
  72. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/chat_response.py +0 -0
  73. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/message.py +0 -0
  74. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/__init__.py +0 -0
  75. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/claude_message.py +0 -0
  76. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/gemini_message.py +0 -0
  77. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/openai_completion_message.py +0 -0
  78. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/openai_responses_message.py +0 -0
  79. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/model_message/xai_message.py +0 -0
  80. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/llm_bridge/type/serializer.py +0 -0
  81. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/__init__.py +0 -0
  82. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/__init__.py +0 -0
  83. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/__init__.py +0 -0
  84. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/__init__.py +0 -0
  85. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/claude_message_converter_test.py +0 -0
  86. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/gemini_message_converter_test.py +0 -0
  87. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/message_factory.py +0 -0
  88. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/openai_completion_message_converter_test.py +0 -0
  89. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/openai_responses_message_converter_test.py +0 -0
  90. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/chat_generate/model_message_converter/xai_message_converter_test.py +0 -0
  91. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/message_process/__init__.py +0 -0
  92. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/message_process/file_type_checker_test.py +0 -0
  93. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/tests/logic/model_prices_test.py +0 -0
  94. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/.env.example +0 -0
  95. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/__init__.py +0 -0
  96. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/batch/__init__.py +0 -0
  97. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/batch/batch.py +0 -0
  98. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/batch/config.py +0 -0
  99. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/keys.py +0 -0
  100. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/messages.py +0 -0
  101. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/single/__init__.py +0 -0
  102. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/single/single.py +0 -0
  103. {llm_bridge-2.2.0 → llm_bridge-2.2.2}/usage/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: LLM-Bridge
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: A library that wraps multiple LLM providers into a consistent API while using each provider's native SDK internally, supporting multimodal I/O, file processing, and stream output.
5
5
  Author-email: windsnow1025 <windsnow1025@gmail.com>
6
6
  License-Expression: MIT
@@ -21,6 +21,7 @@ class NonStreamClaudeClient(ClaudeClient):
21
21
  tools=self.tools,
22
22
  cache_control=self.cache_control,
23
23
  thinking=self.thinking,
24
+ speed=self.speed,
24
25
  output_config=self.output_config,
25
26
  )
26
27
 
@@ -41,6 +41,7 @@ class StreamClaudeClient(ClaudeClient):
41
41
  tools=self.tools,
42
42
  cache_control=self.cache_control,
43
43
  thinking=self.thinking,
44
+ speed=self.speed,
44
45
  output_config=self.output_config,
45
46
  stream=True,
46
47
  )
@@ -1,4 +1,5 @@
1
1
  from collections.abc import AsyncGenerator
2
+ from typing import Literal
2
3
 
3
4
  import anthropic
4
5
  from anthropic import Omit
@@ -23,6 +24,7 @@ class ClaudeClient(ChatClient):
23
24
  tools: list[BetaToolUnionParam],
24
25
  cache_control: BetaCacheControlEphemeralParam,
25
26
  thinking: BetaThinkingConfigParam | Omit,
27
+ speed: Literal["standard", "fast"] | Omit,
26
28
  output_config: BetaOutputConfigParam | Omit,
27
29
  ):
28
30
  self.model = model
@@ -34,6 +36,7 @@ class ClaudeClient(ChatClient):
34
36
  self.tools = tools
35
37
  self.cache_control = cache_control
36
38
  self.thinking = thinking
39
+ self.speed = speed
37
40
  self.output_config = output_config
38
41
 
39
42
  async def generate_non_stream_response(self) -> ChatResponse:
@@ -1,4 +1,4 @@
1
- from typing import Any
1
+ from typing import Any, Literal
2
2
 
3
3
  import anthropic
4
4
  from anthropic import Omit, transform_schema
@@ -62,6 +62,10 @@ async def create_claude_client(
62
62
  thinking = BetaThinkingConfigAdaptiveParam(type="adaptive", display="summarized")
63
63
 
64
64
  betas: list[AnthropicBetaParam] | Omit = omit
65
+ speed: Literal["standard", "fast"] | Omit = omit
66
+ if model in ["claude-opus-5-5"]:
67
+ betas = ["fast-mode-2026-02-01"]
68
+ speed = "fast"
65
69
 
66
70
  tools: list[BetaToolUnionParam] = []
67
71
  if web_search:
@@ -103,6 +107,7 @@ async def create_claude_client(
103
107
  tools=tools,
104
108
  cache_control=cache_control,
105
109
  thinking=thinking,
110
+ speed=speed,
106
111
  output_config=output_config,
107
112
  )
108
113
  else:
@@ -116,5 +121,6 @@ async def create_claude_client(
116
121
  tools=tools,
117
122
  cache_control=cache_control,
118
123
  thinking=thinking,
124
+ speed=speed,
119
125
  output_config=output_config,
120
126
  )
@@ -1,4 +1,58 @@
1
1
  [
2
+ {
3
+ "apiType": "Google AI Studio",
4
+ "model": "gemini-4-argon",
5
+ "input": 7.2,
6
+ "output": 36
7
+ },
8
+ {
9
+ "apiType": "Google AI Studio",
10
+ "model": "gemini-3.1-pro-preview",
11
+ "input": 7.2,
12
+ "output": 32.4
13
+ },
14
+ {
15
+ "apiType": "Google AI Studio",
16
+ "model": "gemini-omni-flash-preview",
17
+ "input": 1.5,
18
+ "output": 17.5
19
+ },
20
+ {
21
+ "apiType": "Google AI Studio",
22
+ "model": "gemini-3.8-flash",
23
+ "input": 2.7,
24
+ "output": 13.5
25
+ },
26
+ {
27
+ "apiType": "Google AI Studio",
28
+ "model": "gemini-3.6-flash",
29
+ "input": 2.7,
30
+ "output": 13.5
31
+ },
32
+ {
33
+ "apiType": "Google AI Studio",
34
+ "model": "gemini-3-flash-preview",
35
+ "input": 1.8,
36
+ "output": 5.4
37
+ },
38
+ {
39
+ "apiType": "Google AI Studio",
40
+ "model": "gemini-3-pro-image",
41
+ "input": 3.6,
42
+ "output": 216
43
+ },
44
+ {
45
+ "apiType": "Google AI Studio",
46
+ "model": "gemini-3.1-flash-image",
47
+ "input": 0.9,
48
+ "output": 108
49
+ },
50
+ {
51
+ "apiType": "Google AI Studio",
52
+ "model": "gemini-flash-latest",
53
+ "input": 1,
54
+ "output": 2.5
55
+ },
2
56
  {
3
57
  "apiType": "Grok",
4
58
  "model": "grok-4.7",
@@ -68,8 +122,8 @@
68
122
  {
69
123
  "apiType": "Claude",
70
124
  "model": "claude-opus-5-5",
71
- "input": 4,
72
- "output": 20
125
+ "input": 8,
126
+ "output": 40
73
127
  },
74
128
  {
75
129
  "apiType": "Claude",
@@ -89,6 +143,12 @@
89
143
  "input": 0.5,
90
144
  "output": 2.5
91
145
  },
146
+ {
147
+ "apiType": "Vertex AI",
148
+ "model": "gemini-4-argon",
149
+ "input": 7.2,
150
+ "output": 36
151
+ },
92
152
  {
93
153
  "apiType": "Vertex AI",
94
154
  "model": "gemini-3.1-pro-preview",
@@ -131,54 +191,6 @@
131
191
  "input": 0.9,
132
192
  "output": 108
133
193
  },
134
- {
135
- "apiType": "Google AI Studio",
136
- "model": "gemini-3.1-pro-preview",
137
- "input": 7.2,
138
- "output": 32.4
139
- },
140
- {
141
- "apiType": "Google AI Studio",
142
- "model": "gemini-omni-flash-preview",
143
- "input": 1.5,
144
- "output": 17.5
145
- },
146
- {
147
- "apiType": "Google AI Studio",
148
- "model": "gemini-3.8-flash",
149
- "input": 2.7,
150
- "output": 13.5
151
- },
152
- {
153
- "apiType": "Google AI Studio",
154
- "model": "gemini-3.6-flash",
155
- "input": 2.7,
156
- "output": 13.5
157
- },
158
- {
159
- "apiType": "Google AI Studio",
160
- "model": "gemini-3-flash-preview",
161
- "input": 1.8,
162
- "output": 5.4
163
- },
164
- {
165
- "apiType": "Google AI Studio",
166
- "model": "gemini-3-pro-image",
167
- "input": 3.6,
168
- "output": 216
169
- },
170
- {
171
- "apiType": "Google AI Studio",
172
- "model": "gemini-3.1-flash-image",
173
- "input": 0.9,
174
- "output": 108
175
- },
176
- {
177
- "apiType": "Google AI Studio",
178
- "model": "gemini-flash-latest",
179
- "input": 1,
180
- "output": 2.5
181
- },
182
194
  {
183
195
  "apiType": "Google AI Studio Free Tier",
184
196
  "model": "gemini-3.8-flash",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "LLM-Bridge"
7
- version = "2.2.0"
7
+ version = "2.2.2"
8
8
  dependencies = [
9
9
  "fastapi",
10
10
  "httpx",
@@ -161,10 +161,11 @@ messages = [
161
161
  ]
162
162
 
163
163
  # See /llm_bridge/resources/model_prices.json for available models
164
- model = "gpt-6-astra"
164
+ # model = "gpt-6-astra"
165
165
  # model = "gpt-5.6-luna"
166
166
  # model = "gpt-4.1"
167
167
  # model = "gpt-audio-1.5"
168
+ model = "gemini-4-argon"
168
169
  # model = "gemini-3.1-pro-preview"
169
170
  # model = "gemini-3-pro-image"
170
171
  # model = "gemini-3.1-flash-image"
@@ -175,8 +176,8 @@ model = "gpt-6-astra"
175
176
 
176
177
  # api_type = "Vertex AI"
177
178
  # api_type = "Google AI Studio Free Tier"
178
- # api_type = "Google AI Studio"
179
- api_type = "OpenAI"
179
+ api_type = "Google AI Studio"
180
+ # api_type = "OpenAI"
180
181
  # api_type = "OpenAI-Azure"
181
182
  # api_type = "Claude"
182
183
  # api_type = "Grok"
@@ -794,7 +794,7 @@ wheels = [
794
794
 
795
795
  [[package]]
796
796
  name = "llm-bridge"
797
- version = "2.2.0"
797
+ version = "2.2.2"
798
798
  source = { editable = "." }
799
799
  dependencies = [
800
800
  { name = "anthropic" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes