tamar-model-client 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tamar-model-client
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: A Python SDK for interacting with the Model Manager gRPC service
5
5
  Home-page: http://gitlab.tamaredge.top/project-tap/AgentOS/model-manager-client
6
6
  Author: Oscar Ou
@@ -31,9 +31,9 @@ Dynamic: requires-dist
31
31
  Dynamic: requires-python
32
32
  Dynamic: summary
33
33
 
34
- # Model Manager Client
34
+ # Tamar Model Client
35
35
 
36
- **Model Manager Client** 是一款高性能的 Python SDK,用于连接 Model Manager gRPC 服务,统一调用多家第三方 AI
36
+ **Tamar Model Client** 是一款高性能的 Python SDK,用于连接 Model Manager gRPC 服务,统一调用多家第三方 AI
37
37
  模型服务商(如OpenAI、Google、Azure OpenAI)。
38
38
 
39
39
  ## ✨ 特性亮点
@@ -58,7 +58,7 @@ pip install tamar-model-client
58
58
  ## 🏗️ 项目结构概览
59
59
 
60
60
  ```
61
- model_manager_client/
61
+ tamar_model_client/
62
62
  ├── generated/ # gRPC 生成的代码
63
63
  │ ├── model_service.proto # 协议定义文件
64
64
  │ ├── model_service_pb2.py # 生成的 protobuf 代码
@@ -82,16 +82,16 @@ model_manager_client/
82
82
  ### 客户端初始化
83
83
 
84
84
  ```python
85
- from model_manager_client import ModelManagerClient, AsyncModelManagerClient
85
+ from tamar_model_client import TamarModelClient, AsyncTamarModelClient
86
86
 
87
87
  # 同步客户端
88
- client = ModelManagerClient(
88
+ client = TamarModelClient(
89
89
  server_address="localhost:50051",
90
90
  jwt_token="your-jwt-token"
91
91
  )
92
92
 
93
93
  # 异步客户端
94
- async_client = AsyncModelManagerClient(
94
+ async_client = AsyncTamarModelClient(
95
95
  server_address="localhost:50051",
96
96
  jwt_secret_key="your-jwt-secret-key" # 使用固定密钥自动生成 JWT
97
97
  )
@@ -105,12 +105,12 @@ async_client = AsyncModelManagerClient(
105
105
  #### OpenAI 调用示例
106
106
 
107
107
  ```python
108
- from model_manager_client import ModelManagerClient
109
- from model_manager_client.schemas import ModelRequest, UserContext
110
- from model_manager_client.enums import ProviderType, InvokeType, Channel
108
+ from tamar_model_client import TamarModelClient
109
+ from tamar_model_client.schemas import ModelRequest, UserContext
110
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
111
111
 
112
112
  # 创建同步客户端
113
- client = ModelManagerClient()
113
+ client = TamarModelClient()
114
114
 
115
115
  # OpenAI 调用示例
116
116
  request_data = ModelRequest(
@@ -144,12 +144,12 @@ else:
144
144
  #### Google 调用示例 (AI Studio / Vertex AI)
145
145
 
146
146
  ```python
147
- from model_manager_client import ModelManagerClient
148
- from model_manager_client.schemas import ModelRequest, UserContext
149
- from model_manager_client.enums import ProviderType, InvokeType, Channel
147
+ from tamar_model_client import TamarModelClient
148
+ from tamar_model_client.schemas import ModelRequest, UserContext
149
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
150
150
 
151
151
  # 创建同步客户端
152
- client = ModelManagerClient()
152
+ client = TamarModelClient()
153
153
 
154
154
  # Google AI Studio 调用示例
155
155
  request_data = ModelRequest(
@@ -207,12 +207,12 @@ else:
207
207
  #### Azure OpenAI 调用示例
208
208
 
209
209
  ```python
210
- from model_manager_client import ModelManagerClient
211
- from model_manager_client.schemas import ModelRequest, UserContext
212
- from model_manager_client.enums import ProviderType, InvokeType, Channel
210
+ from tamar_model_client import TamarModelClient
211
+ from tamar_model_client.schemas import ModelRequest, UserContext
212
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
213
213
 
214
214
  # 创建同步客户端
215
- client = ModelManagerClient()
215
+ client = TamarModelClient()
216
216
 
217
217
  # Azure OpenAI 调用示例
218
218
  request_data = ModelRequest(
@@ -247,14 +247,14 @@ else:
247
247
 
248
248
  ```python
249
249
  import asyncio
250
- from model_manager_client import AsyncModelManagerClient
251
- from model_manager_client.schemas import ModelRequest, UserContext
252
- from model_manager_client.enums import ProviderType, InvokeType, Channel
250
+ from tamar_model_client import AsyncTamarModelClient
251
+ from tamar_model_client.schemas import ModelRequest, UserContext
252
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
253
253
 
254
254
 
255
255
  async def main():
256
256
  # 创建异步客户端
257
- client = AsyncModelManagerClient()
257
+ client = AsyncTamarModelClient()
258
258
 
259
259
  # 组装请求参数
260
260
  request_data = ModelRequest(
@@ -293,14 +293,14 @@ asyncio.run(main())
293
293
 
294
294
  ```python
295
295
  import asyncio
296
- from model_manager_client import AsyncModelManagerClient
297
- from model_manager_client.schemas import ModelRequest, UserContext
298
- from model_manager_client.enums import ProviderType, InvokeType, Channel
296
+ from tamar_model_client import AsyncTamarModelClient
297
+ from tamar_model_client.schemas import ModelRequest, UserContext
298
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
299
299
 
300
300
 
301
301
  async def stream_example():
302
302
  # 创建异步客户端
303
- client = AsyncModelManagerClient()
303
+ client = AsyncTamarModelClient()
304
304
 
305
305
  # 组装请求参数
306
306
  request_data = ModelRequest(
@@ -340,17 +340,17 @@ asyncio.run(stream_example())
340
340
 
341
341
  ```python
342
342
  import asyncio
343
- from model_manager_client import AsyncModelManagerClient
344
- from model_manager_client.schemas import (
343
+ from tamar_model_client import AsyncTamarModelClient
344
+ from tamar_model_client.schemas import (
345
345
  BatchModelRequest, BatchModelRequestItem,
346
346
  UserContext
347
347
  )
348
- from model_manager_client.enums import ProviderType, InvokeType, Channel
348
+ from tamar_model_client.enums import ProviderType, InvokeType, Channel
349
349
 
350
350
 
351
351
  async def batch_example():
352
352
  # 创建异步客户端
353
- client = AsyncModelManagerClient()
353
+ client = AsyncTamarModelClient()
354
354
 
355
355
  # 组装批量请求参数
356
356
  batch_request = BatchModelRequest(
@@ -404,77 +404,48 @@ asyncio.run(batch_example())
404
404
 
405
405
  ### 文件输入示例
406
406
 
407
- 支持处理图像等文件输入(需使用支持多模态的模型,如 gpt-4-vision-preview):
407
+ 支持处理图像等文件输入(需使用支持多模态的模型,如 gemini-2.0-flash):
408
408
 
409
409
  ```python
410
- import asyncio
411
- from model_manager_client import AsyncModelManagerClient
412
- from model_manager_client.schemas import ModelRequest, UserContext
413
- from model_manager_client.enums import ProviderType, InvokeType, Channel
414
-
415
-
416
- async def file_input_example():
417
- # 创建异步客户端
418
- client = AsyncModelManagerClient()
419
-
420
- # 组装请求参数(包含文件输入)
421
- request_data = ModelRequest(
422
- provider=ProviderType.OPENAI,
423
- channel=Channel.OPENAI,
424
- invoke_type=InvokeType.CHAT_COMPLETIONS,
425
- model="gpt-4-vision-preview", # 使用支持图像的模型
426
- messages=[
427
- {
428
- "role": "user",
429
- "content": [
430
- {
431
- "type": "image_url",
432
- "image_url": {
433
- "url": "https://example.com/image.jpg"
434
- }
435
- },
436
- {
437
- "type": "text",
438
- "text": "请描述这张图片。"
439
- }
440
- ]
441
- }
442
- ],
443
- user_context=UserContext(
444
- user_id="test_user",
445
- org_id="test_org",
446
- client_type="python-sdk"
410
+ from tamar_model_client import TamarModelClient
411
+ from tamar_model_client.schemas import ModelRequest, UserContext
412
+ from tamar_model_client.enums import ProviderType
413
+ from google.genai.types import Part
414
+ model_request = ModelRequest(
415
+ provider=ProviderType.GOOGLE, # 选择 Google作为提供商
416
+ model="gemini-2.0-flash",
417
+ contents=[
418
+ "What is shown in this image?",
419
+ Part.from_uri( # 这个是Google那边的参数支持
420
+ file_uri="https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg",
421
+ mime_type="image/jpeg",
447
422
  ),
448
- stream=False
449
- )
450
-
451
- # 发送请求并获取响应
452
- response = await client.invoke(request_data)
453
- if response.error:
454
- print(f"错误: {response.error}")
455
- else:
456
- print(f"响应: {response.content}")
457
- if response.usage:
458
- print(f"Token 使用情况: {response.usage}")
459
-
460
-
461
- # 运行文件输入示例
462
- asyncio.run(file_input_example())
423
+ ],
424
+ user_context=UserContext(
425
+ org_id="testllm",
426
+ user_id="testllm",
427
+ client_type="conversation-service"
428
+ ),
429
+ )
430
+ client = TamarModelClient("localhost:50051")
431
+ response = client.invoke(
432
+ model_request=model_request
433
+ )
463
434
  ```
464
435
 
465
436
  ### ⚠️ 注意事项
466
437
 
467
- 以下是使用 Model Manager Client 时的重要提示:
438
+ 以下是使用 Tamar Model Client 时的重要提示:
468
439
 
469
440
  - **参数处理**
470
- - 公共参数包括:**服务商 (provider)**、**渠道 (channel)** **调用方法 (invoke_type)**
441
+ - 公共参数包括:**服务商 (provider)**、**渠道 (channel)** **调用方法 (invoke_type)** 以及 **用户信息(user_context)**
471
442
  - 其中 **channel** 和 **invoke_type** 为可选参数,**建议默认使用系统自动推断**,除非有特殊需求再显式指定
472
443
  - 是否流式输出由公共参数 **stream** 控制,其他参数遵循对应服务商官方 SDK 的标准定义
473
444
  - **客户端连接管理**
474
445
  - gRPC 使用 HTTP/2 长连接,**建议将客户端实例作为单例使用**
475
- - 若需创建多个实例,**请务必调用** `client.close()` **方法手动关闭连接**,以防止连接堆积或资源泄露。
446
+ - 若需创建多个实例,**请务必调用** `client.close()` **方法手动关闭连接**,以防止连接堆积或资源泄露
476
447
  - **异常处理**:
477
- - 所有接口均提供详细的**错误信息** 以及 **请求ID(request_id)**,业务调用时建议纳入对应日志便于后期排错。
448
+ - 所有接口均提供详细的**错误信息** 以及 **请求ID(request_id)**,业务调用时建议纳入对应日志便于后期排错
478
449
 
479
450
  ## ⚙️ 环境变量配置(推荐)
480
451
 
@@ -528,9 +499,9 @@ MODEL_MANAGER_SERVER_GRPC_RETRY_DELAY=1.0
528
499
  加载后,初始化时无需传参:
529
500
 
530
501
  ```python
531
- from model_manager_client import ModelManagerClient
502
+ from tamar_model_client import TamarModelClient
532
503
 
533
- client = ModelManagerClient() # 将使用环境变量中的配置
504
+ client = TamarModelClient() # 将使用环境变量中的配置
534
505
  ```
535
506
 
536
507
  ## 开发
@@ -0,0 +1,34 @@
1
+ model_manager_client/__init__.py,sha256=LsqGh8ARtH9PQijbUjjrvHHmG09YwY4jmejAtlqV9ng,336
2
+ model_manager_client/async_client.py,sha256=4vl4wLMucTqJ8moAZb0bonKYC6gFKwASZFQJIbCiBM4,20599
3
+ model_manager_client/auth.py,sha256=gbwW5Aakeb49PMbmYvrYlVx1mfyn1LEDJ4qQVs-9DA4,438
4
+ model_manager_client/exceptions.py,sha256=jYU494OU_NeIa4X393V-Y73mTNm0JZ9yZApnlOM9CJQ,332
5
+ model_manager_client/sync_client.py,sha256=rLap64kk4rvAGJQsB7OXH565PW35xlMiSXh0iQTnJiM,4024
6
+ model_manager_client/enums/__init__.py,sha256=3cYYn8ztNGBa_pI_5JGRVYf2QX8fkBVWdjID1PLvoBQ,182
7
+ model_manager_client/enums/channel.py,sha256=wCzX579nNpTtwzGeS6S3Ls0UzVAgsOlfy4fXMzQTCAw,199
8
+ model_manager_client/enums/invoke.py,sha256=9C5BxyAd4En-PSscOMynhfDa5WavGaSSOVFSYQGerK4,215
9
+ model_manager_client/enums/providers.py,sha256=L_bX75K6KnWURoFizoitZ1Ybza7bmYDqXecNzNpgIrI,165
10
+ model_manager_client/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ model_manager_client/generated/model_service_pb2.py,sha256=ST84YYQk8x6UtQKIx6HprUxH5uGU4i3LhC8b-lHUQtA,3066
12
+ model_manager_client/generated/model_service_pb2_grpc.py,sha256=BzsINWQeACVnVzLVV0PgieZA25C2-EklMKlA-W50c6Y,5147
13
+ model_manager_client/schemas/__init__.py,sha256=AxuI-TcvA4OMTj2FtK4wAItvz9LrK_293pu3cmMLE7k,394
14
+ model_manager_client/schemas/inputs.py,sha256=gXaifquIhSgUdbteRXsW9jxiJn0aOGDJ4UGCsrYdhPI,14323
15
+ model_manager_client/schemas/outputs.py,sha256=M_fcqUtXPJnfiLabHlyA8BorlC5pYkf5KLjXO1ysKIQ,1031
16
+ tamar_model_client/__init__.py,sha256=LMECAuDARWHV1XzH3msoDXcyurS2eihRQmBy26_PUE0,328
17
+ tamar_model_client/async_client.py,sha256=R_3u3z55QB-FFsPuP2FHNFW35ZqRnMD756H4Pm4nj7Q,17875
18
+ tamar_model_client/auth.py,sha256=gbwW5Aakeb49PMbmYvrYlVx1mfyn1LEDJ4qQVs-9DA4,438
19
+ tamar_model_client/exceptions.py,sha256=jYU494OU_NeIa4X393V-Y73mTNm0JZ9yZApnlOM9CJQ,332
20
+ tamar_model_client/sync_client.py,sha256=o8b20fQUvtMq1gWax3_dfOpputYT4l9pRTz6cHdB0lg,4006
21
+ tamar_model_client/enums/__init__.py,sha256=3cYYn8ztNGBa_pI_5JGRVYf2QX8fkBVWdjID1PLvoBQ,182
22
+ tamar_model_client/enums/channel.py,sha256=wCzX579nNpTtwzGeS6S3Ls0UzVAgsOlfy4fXMzQTCAw,199
23
+ tamar_model_client/enums/invoke.py,sha256=9C5BxyAd4En-PSscOMynhfDa5WavGaSSOVFSYQGerK4,215
24
+ tamar_model_client/enums/providers.py,sha256=L_bX75K6KnWURoFizoitZ1Ybza7bmYDqXecNzNpgIrI,165
25
+ tamar_model_client/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ tamar_model_client/generated/model_service_pb2.py,sha256=ST84YYQk8x6UtQKIx6HprUxH5uGU4i3LhC8b-lHUQtA,3066
27
+ tamar_model_client/generated/model_service_pb2_grpc.py,sha256=KW1UEGUim_kmSi_fCIjeLNVOp8nAPE08DgJOn6PY7PM,5145
28
+ tamar_model_client/schemas/__init__.py,sha256=AxuI-TcvA4OMTj2FtK4wAItvz9LrK_293pu3cmMLE7k,394
29
+ tamar_model_client/schemas/inputs.py,sha256=tXkBy19gm-ms8YE8GKn374uYY85hT7iT3BgivJGOJ4A,14319
30
+ tamar_model_client/schemas/outputs.py,sha256=M_fcqUtXPJnfiLabHlyA8BorlC5pYkf5KLjXO1ysKIQ,1031
31
+ tamar_model_client-0.1.3.dist-info/METADATA,sha256=uYyMheN2rY9gnsqBHinS-sKJ2TfQdTyNMhVWImJZfV4,16608
32
+ tamar_model_client-0.1.3.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
33
+ tamar_model_client-0.1.3.dist-info/top_level.txt,sha256=_LfDhPv_fvON0PoZgQuo4M7EjoWtxPRoQOBJziJmip8,19
34
+ tamar_model_client-0.1.3.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ tamar_model_client
@@ -1,19 +0,0 @@
1
- model_manager_client/__init__.py,sha256=LsqGh8ARtH9PQijbUjjrvHHmG09YwY4jmejAtlqV9ng,336
2
- model_manager_client/async_client.py,sha256=4vl4wLMucTqJ8moAZb0bonKYC6gFKwASZFQJIbCiBM4,20599
3
- model_manager_client/auth.py,sha256=gbwW5Aakeb49PMbmYvrYlVx1mfyn1LEDJ4qQVs-9DA4,438
4
- model_manager_client/exceptions.py,sha256=jYU494OU_NeIa4X393V-Y73mTNm0JZ9yZApnlOM9CJQ,332
5
- model_manager_client/sync_client.py,sha256=rLap64kk4rvAGJQsB7OXH565PW35xlMiSXh0iQTnJiM,4024
6
- model_manager_client/enums/__init__.py,sha256=3cYYn8ztNGBa_pI_5JGRVYf2QX8fkBVWdjID1PLvoBQ,182
7
- model_manager_client/enums/channel.py,sha256=wCzX579nNpTtwzGeS6S3Ls0UzVAgsOlfy4fXMzQTCAw,199
8
- model_manager_client/enums/invoke.py,sha256=9C5BxyAd4En-PSscOMynhfDa5WavGaSSOVFSYQGerK4,215
9
- model_manager_client/enums/providers.py,sha256=L_bX75K6KnWURoFizoitZ1Ybza7bmYDqXecNzNpgIrI,165
10
- model_manager_client/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- model_manager_client/generated/model_service_pb2.py,sha256=ST84YYQk8x6UtQKIx6HprUxH5uGU4i3LhC8b-lHUQtA,3066
12
- model_manager_client/generated/model_service_pb2_grpc.py,sha256=BzsINWQeACVnVzLVV0PgieZA25C2-EklMKlA-W50c6Y,5147
13
- model_manager_client/schemas/__init__.py,sha256=AxuI-TcvA4OMTj2FtK4wAItvz9LrK_293pu3cmMLE7k,394
14
- model_manager_client/schemas/inputs.py,sha256=gXaifquIhSgUdbteRXsW9jxiJn0aOGDJ4UGCsrYdhPI,14323
15
- model_manager_client/schemas/outputs.py,sha256=M_fcqUtXPJnfiLabHlyA8BorlC5pYkf5KLjXO1ysKIQ,1031
16
- tamar_model_client-0.1.1.dist-info/METADATA,sha256=bkSruaqyuAMeaIGbD_cW6ZdouzhFfOLc2r_rWhUVxGE,17477
17
- tamar_model_client-0.1.1.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
18
- tamar_model_client-0.1.1.dist-info/top_level.txt,sha256=hW4Pn-RDdPWK5vISAYwnTVzlWLTmnDZdvo4-ul82xVA,21
19
- tamar_model_client-0.1.1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- model_manager_client