amd-gaia 0.14.3__py3-none-any.whl → 0.15.1__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.
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/METADATA +223 -223
- amd_gaia-0.15.1.dist-info/RECORD +178 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/entry_points.txt +1 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/licenses/LICENSE.md +20 -20
- gaia/__init__.py +29 -29
- gaia/agents/__init__.py +19 -19
- gaia/agents/base/__init__.py +9 -9
- gaia/agents/base/agent.py +2177 -2177
- gaia/agents/base/api_agent.py +120 -120
- gaia/agents/base/console.py +1841 -1841
- gaia/agents/base/errors.py +237 -237
- gaia/agents/base/mcp_agent.py +86 -86
- gaia/agents/base/tools.py +83 -83
- gaia/agents/blender/agent.py +556 -556
- gaia/agents/blender/agent_simple.py +133 -135
- gaia/agents/blender/app.py +211 -211
- gaia/agents/blender/app_simple.py +41 -41
- gaia/agents/blender/core/__init__.py +16 -16
- gaia/agents/blender/core/materials.py +506 -506
- gaia/agents/blender/core/objects.py +316 -316
- gaia/agents/blender/core/rendering.py +225 -225
- gaia/agents/blender/core/scene.py +220 -220
- gaia/agents/blender/core/view.py +146 -146
- gaia/agents/chat/__init__.py +9 -9
- gaia/agents/chat/agent.py +835 -835
- gaia/agents/chat/app.py +1058 -1058
- gaia/agents/chat/session.py +508 -508
- gaia/agents/chat/tools/__init__.py +15 -15
- gaia/agents/chat/tools/file_tools.py +96 -96
- gaia/agents/chat/tools/rag_tools.py +1729 -1729
- gaia/agents/chat/tools/shell_tools.py +436 -436
- gaia/agents/code/__init__.py +7 -7
- gaia/agents/code/agent.py +549 -549
- gaia/agents/code/cli.py +377 -0
- gaia/agents/code/models.py +135 -135
- gaia/agents/code/orchestration/__init__.py +24 -24
- gaia/agents/code/orchestration/checklist_executor.py +1763 -1763
- gaia/agents/code/orchestration/checklist_generator.py +713 -713
- gaia/agents/code/orchestration/factories/__init__.py +9 -9
- gaia/agents/code/orchestration/factories/base.py +63 -63
- gaia/agents/code/orchestration/factories/nextjs_factory.py +118 -118
- gaia/agents/code/orchestration/factories/python_factory.py +106 -106
- gaia/agents/code/orchestration/orchestrator.py +841 -841
- gaia/agents/code/orchestration/project_analyzer.py +391 -391
- gaia/agents/code/orchestration/steps/__init__.py +67 -67
- gaia/agents/code/orchestration/steps/base.py +188 -188
- gaia/agents/code/orchestration/steps/error_handler.py +314 -314
- gaia/agents/code/orchestration/steps/nextjs.py +828 -828
- gaia/agents/code/orchestration/steps/python.py +307 -307
- gaia/agents/code/orchestration/template_catalog.py +469 -469
- gaia/agents/code/orchestration/workflows/__init__.py +14 -14
- gaia/agents/code/orchestration/workflows/base.py +80 -80
- gaia/agents/code/orchestration/workflows/nextjs.py +186 -186
- gaia/agents/code/orchestration/workflows/python.py +94 -94
- gaia/agents/code/prompts/__init__.py +11 -11
- gaia/agents/code/prompts/base_prompt.py +77 -77
- gaia/agents/code/prompts/code_patterns.py +2036 -2036
- gaia/agents/code/prompts/nextjs_prompt.py +40 -40
- gaia/agents/code/prompts/python_prompt.py +109 -109
- gaia/agents/code/schema_inference.py +365 -365
- gaia/agents/code/system_prompt.py +41 -41
- gaia/agents/code/tools/__init__.py +42 -42
- gaia/agents/code/tools/cli_tools.py +1138 -1138
- gaia/agents/code/tools/code_formatting.py +319 -319
- gaia/agents/code/tools/code_tools.py +769 -769
- gaia/agents/code/tools/error_fixing.py +1347 -1347
- gaia/agents/code/tools/external_tools.py +180 -180
- gaia/agents/code/tools/file_io.py +845 -845
- gaia/agents/code/tools/prisma_tools.py +190 -190
- gaia/agents/code/tools/project_management.py +1016 -1016
- gaia/agents/code/tools/testing.py +321 -321
- gaia/agents/code/tools/typescript_tools.py +122 -122
- gaia/agents/code/tools/validation_parsing.py +461 -461
- gaia/agents/code/tools/validation_tools.py +806 -806
- gaia/agents/code/tools/web_dev_tools.py +1758 -1758
- gaia/agents/code/validators/__init__.py +16 -16
- gaia/agents/code/validators/antipattern_checker.py +241 -241
- gaia/agents/code/validators/ast_analyzer.py +197 -197
- gaia/agents/code/validators/requirements_validator.py +145 -145
- gaia/agents/code/validators/syntax_validator.py +171 -171
- gaia/agents/docker/__init__.py +7 -7
- gaia/agents/docker/agent.py +642 -642
- gaia/agents/emr/__init__.py +8 -8
- gaia/agents/emr/agent.py +1506 -1506
- gaia/agents/emr/cli.py +1322 -1322
- gaia/agents/emr/constants.py +475 -475
- gaia/agents/emr/dashboard/__init__.py +4 -4
- gaia/agents/emr/dashboard/server.py +1974 -1974
- gaia/agents/jira/__init__.py +11 -11
- gaia/agents/jira/agent.py +894 -894
- gaia/agents/jira/jql_templates.py +299 -299
- gaia/agents/routing/__init__.py +7 -7
- gaia/agents/routing/agent.py +567 -570
- gaia/agents/routing/system_prompt.py +75 -75
- gaia/agents/summarize/__init__.py +11 -0
- gaia/agents/summarize/agent.py +885 -0
- gaia/agents/summarize/prompts.py +129 -0
- gaia/api/__init__.py +23 -23
- gaia/api/agent_registry.py +238 -238
- gaia/api/app.py +305 -305
- gaia/api/openai_server.py +575 -575
- gaia/api/schemas.py +186 -186
- gaia/api/sse_handler.py +373 -373
- gaia/apps/__init__.py +4 -4
- gaia/apps/llm/__init__.py +6 -6
- gaia/apps/llm/app.py +173 -169
- gaia/apps/summarize/app.py +116 -633
- gaia/apps/summarize/html_viewer.py +133 -133
- gaia/apps/summarize/pdf_formatter.py +284 -284
- gaia/audio/__init__.py +2 -2
- gaia/audio/audio_client.py +439 -439
- gaia/audio/audio_recorder.py +269 -269
- gaia/audio/kokoro_tts.py +599 -599
- gaia/audio/whisper_asr.py +432 -432
- gaia/chat/__init__.py +16 -16
- gaia/chat/app.py +430 -430
- gaia/chat/prompts.py +522 -522
- gaia/chat/sdk.py +1228 -1225
- gaia/cli.py +5481 -5621
- gaia/database/__init__.py +10 -10
- gaia/database/agent.py +176 -176
- gaia/database/mixin.py +290 -290
- gaia/database/testing.py +64 -64
- gaia/eval/batch_experiment.py +2332 -2332
- gaia/eval/claude.py +542 -542
- gaia/eval/config.py +37 -37
- gaia/eval/email_generator.py +512 -512
- gaia/eval/eval.py +3179 -3179
- gaia/eval/groundtruth.py +1130 -1130
- gaia/eval/transcript_generator.py +582 -582
- gaia/eval/webapp/README.md +167 -167
- gaia/eval/webapp/package-lock.json +875 -875
- gaia/eval/webapp/package.json +20 -20
- gaia/eval/webapp/public/app.js +3402 -3402
- gaia/eval/webapp/public/index.html +87 -87
- gaia/eval/webapp/public/styles.css +3661 -3661
- gaia/eval/webapp/server.js +415 -415
- gaia/eval/webapp/test-setup.js +72 -72
- gaia/llm/__init__.py +9 -2
- gaia/llm/base_client.py +60 -0
- gaia/llm/exceptions.py +12 -0
- gaia/llm/factory.py +70 -0
- gaia/llm/lemonade_client.py +3236 -3221
- gaia/llm/lemonade_manager.py +294 -294
- gaia/llm/providers/__init__.py +9 -0
- gaia/llm/providers/claude.py +108 -0
- gaia/llm/providers/lemonade.py +120 -0
- gaia/llm/providers/openai_provider.py +79 -0
- gaia/llm/vlm_client.py +382 -382
- gaia/logger.py +189 -189
- gaia/mcp/agent_mcp_server.py +245 -245
- gaia/mcp/blender_mcp_client.py +138 -138
- gaia/mcp/blender_mcp_server.py +648 -648
- gaia/mcp/context7_cache.py +332 -332
- gaia/mcp/external_services.py +518 -518
- gaia/mcp/mcp_bridge.py +811 -550
- gaia/mcp/servers/__init__.py +6 -6
- gaia/mcp/servers/docker_mcp.py +83 -83
- gaia/perf_analysis.py +361 -0
- gaia/rag/__init__.py +10 -10
- gaia/rag/app.py +293 -293
- gaia/rag/demo.py +304 -304
- gaia/rag/pdf_utils.py +235 -235
- gaia/rag/sdk.py +2194 -2194
- gaia/security.py +163 -163
- gaia/talk/app.py +289 -289
- gaia/talk/sdk.py +538 -538
- gaia/testing/__init__.py +87 -87
- gaia/testing/assertions.py +330 -330
- gaia/testing/fixtures.py +333 -333
- gaia/testing/mocks.py +493 -493
- gaia/util.py +46 -46
- gaia/utils/__init__.py +33 -33
- gaia/utils/file_watcher.py +675 -675
- gaia/utils/parsing.py +223 -223
- gaia/version.py +100 -100
- amd_gaia-0.14.3.dist-info/RECORD +0 -168
- gaia/agents/code/app.py +0 -266
- gaia/llm/llm_client.py +0 -729
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/WHEEL +0 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/top_level.txt +0 -0
gaia/api/schemas.py
CHANGED
|
@@ -1,186 +1,186 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""
|
|
4
|
-
OpenAI API-compatible Pydantic schemas
|
|
5
|
-
|
|
6
|
-
These schemas define the request and response structures for the
|
|
7
|
-
OpenAI-compatible API endpoints.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from typing import Any, Dict, List, Literal, Optional
|
|
11
|
-
|
|
12
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class ChatMessage(BaseModel):
|
|
16
|
-
"""
|
|
17
|
-
Chat message in OpenAI format.
|
|
18
|
-
|
|
19
|
-
Supports standard chat roles plus 'tool' for tool call results.
|
|
20
|
-
|
|
21
|
-
Example:
|
|
22
|
-
>>> msg = ChatMessage(role="user", content="Hello")
|
|
23
|
-
>>> msg.model_dump()
|
|
24
|
-
{'role': 'user', 'content': 'Hello'}
|
|
25
|
-
|
|
26
|
-
>>> tool_msg = ChatMessage(role="tool", tool_call_id="call_123", content="Result")
|
|
27
|
-
>>> tool_msg.model_dump()
|
|
28
|
-
{'role': 'tool', 'content': 'Result', 'tool_call_id': 'call_123'}
|
|
29
|
-
"""
|
|
30
|
-
|
|
31
|
-
role: Literal["system", "user", "assistant", "tool"]
|
|
32
|
-
content: Optional[str] = None
|
|
33
|
-
tool_calls: Optional[List[Dict[str, Any]]] = Field(
|
|
34
|
-
default=None, description="Tool calls in the message (for assistant messages)"
|
|
35
|
-
)
|
|
36
|
-
tool_call_id: Optional[str] = Field(
|
|
37
|
-
default=None, description="Tool call ID (for tool role messages)"
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class ChatCompletionRequest(BaseModel):
|
|
42
|
-
"""
|
|
43
|
-
POST /v1/chat/completions request schema.
|
|
44
|
-
|
|
45
|
-
Example:
|
|
46
|
-
>>> request = ChatCompletionRequest(
|
|
47
|
-
... model="gaia-code",
|
|
48
|
-
... messages=[{"role": "user", "content": "Hello"}]
|
|
49
|
-
... )
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
model: str = Field(..., description="Model ID (e.g., gaia-code, gaia-jira)")
|
|
53
|
-
messages: List[ChatMessage] = Field(..., description="Array of chat messages")
|
|
54
|
-
stream: bool = Field(default=False, description="Enable SSE streaming")
|
|
55
|
-
temperature: Optional[float] = Field(
|
|
56
|
-
default=0.7, ge=0, le=2, description="Sampling temperature"
|
|
57
|
-
)
|
|
58
|
-
max_tokens: Optional[int] = Field(
|
|
59
|
-
default=None, gt=0, description="Maximum tokens to generate"
|
|
60
|
-
)
|
|
61
|
-
top_p: Optional[float] = Field(
|
|
62
|
-
default=1.0, ge=0, le=1, description="Nucleus sampling parameter"
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class ChatCompletionResponseMessage(BaseModel):
|
|
67
|
-
"""
|
|
68
|
-
Response message from chat completion.
|
|
69
|
-
|
|
70
|
-
Example:
|
|
71
|
-
>>> msg = ChatCompletionResponseMessage(
|
|
72
|
-
... role="assistant",
|
|
73
|
-
... content="Hello! How can I help?"
|
|
74
|
-
... )
|
|
75
|
-
"""
|
|
76
|
-
|
|
77
|
-
role: Literal["assistant"]
|
|
78
|
-
content: str
|
|
79
|
-
tool_calls: Optional[List[Dict[str, Any]]] = Field(
|
|
80
|
-
default=None,
|
|
81
|
-
description="Tool calls for file operations (OpenAI-compatible format)",
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
class ChatCompletionChoice(BaseModel):
|
|
86
|
-
"""
|
|
87
|
-
A single completion choice.
|
|
88
|
-
|
|
89
|
-
Example:
|
|
90
|
-
>>> choice = ChatCompletionChoice(
|
|
91
|
-
... index=0,
|
|
92
|
-
... message=ChatCompletionResponseMessage(
|
|
93
|
-
... role="assistant",
|
|
94
|
-
... content="Hello!"
|
|
95
|
-
... ),
|
|
96
|
-
... finish_reason="stop"
|
|
97
|
-
... )
|
|
98
|
-
"""
|
|
99
|
-
|
|
100
|
-
index: int
|
|
101
|
-
message: ChatCompletionResponseMessage
|
|
102
|
-
finish_reason: Literal["stop", "length"]
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
class UsageInfo(BaseModel):
|
|
106
|
-
"""
|
|
107
|
-
Token usage information.
|
|
108
|
-
|
|
109
|
-
Example:
|
|
110
|
-
>>> usage = UsageInfo(
|
|
111
|
-
... prompt_tokens=10,
|
|
112
|
-
... completion_tokens=20,
|
|
113
|
-
... total_tokens=30
|
|
114
|
-
... )
|
|
115
|
-
"""
|
|
116
|
-
|
|
117
|
-
prompt_tokens: int
|
|
118
|
-
completion_tokens: int
|
|
119
|
-
total_tokens: int
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
class ChatCompletionResponse(BaseModel):
|
|
123
|
-
"""
|
|
124
|
-
POST /v1/chat/completions response schema (non-streaming).
|
|
125
|
-
|
|
126
|
-
Example:
|
|
127
|
-
>>> response = ChatCompletionResponse(
|
|
128
|
-
... id="chatcmpl-123",
|
|
129
|
-
... object="chat.completion",
|
|
130
|
-
... created=1234567890,
|
|
131
|
-
... model="gaia-code",
|
|
132
|
-
... choices=[...],
|
|
133
|
-
... usage=UsageInfo(...)
|
|
134
|
-
... )
|
|
135
|
-
"""
|
|
136
|
-
|
|
137
|
-
id: str
|
|
138
|
-
object: Literal["chat.completion"]
|
|
139
|
-
created: int
|
|
140
|
-
model: str
|
|
141
|
-
choices: List[ChatCompletionChoice]
|
|
142
|
-
usage: UsageInfo
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
class ModelInfo(BaseModel):
|
|
146
|
-
"""
|
|
147
|
-
Model metadata for /v1/models endpoint.
|
|
148
|
-
|
|
149
|
-
Example:
|
|
150
|
-
>>> model = ModelInfo(
|
|
151
|
-
... id="gaia-code",
|
|
152
|
-
... object="model",
|
|
153
|
-
... created=1234567890,
|
|
154
|
-
... owned_by="amd-gaia",
|
|
155
|
-
... max_input_tokens=32768,
|
|
156
|
-
... max_output_tokens=8192,
|
|
157
|
-
... description="Code agent description"
|
|
158
|
-
... )
|
|
159
|
-
"""
|
|
160
|
-
|
|
161
|
-
model_config = ConfigDict(
|
|
162
|
-
extra="allow"
|
|
163
|
-
) # Allow additional fields for extensibility
|
|
164
|
-
|
|
165
|
-
id: str
|
|
166
|
-
object: Literal["model"]
|
|
167
|
-
created: int
|
|
168
|
-
owned_by: str
|
|
169
|
-
description: Optional[str] = None
|
|
170
|
-
max_input_tokens: Optional[int] = None
|
|
171
|
-
max_output_tokens: Optional[int] = None
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
class ModelListResponse(BaseModel):
|
|
175
|
-
"""
|
|
176
|
-
GET /v1/models response schema.
|
|
177
|
-
|
|
178
|
-
Example:
|
|
179
|
-
>>> response = ModelListResponse(
|
|
180
|
-
... object="list",
|
|
181
|
-
... data=[ModelInfo(...), ModelInfo(...)]
|
|
182
|
-
... )
|
|
183
|
-
"""
|
|
184
|
-
|
|
185
|
-
object: Literal["list"]
|
|
186
|
-
data: List[ModelInfo]
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""
|
|
4
|
+
OpenAI API-compatible Pydantic schemas
|
|
5
|
+
|
|
6
|
+
These schemas define the request and response structures for the
|
|
7
|
+
OpenAI-compatible API endpoints.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from typing import Any, Dict, List, Literal, Optional
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ChatMessage(BaseModel):
|
|
16
|
+
"""
|
|
17
|
+
Chat message in OpenAI format.
|
|
18
|
+
|
|
19
|
+
Supports standard chat roles plus 'tool' for tool call results.
|
|
20
|
+
|
|
21
|
+
Example:
|
|
22
|
+
>>> msg = ChatMessage(role="user", content="Hello")
|
|
23
|
+
>>> msg.model_dump()
|
|
24
|
+
{'role': 'user', 'content': 'Hello'}
|
|
25
|
+
|
|
26
|
+
>>> tool_msg = ChatMessage(role="tool", tool_call_id="call_123", content="Result")
|
|
27
|
+
>>> tool_msg.model_dump()
|
|
28
|
+
{'role': 'tool', 'content': 'Result', 'tool_call_id': 'call_123'}
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
role: Literal["system", "user", "assistant", "tool"]
|
|
32
|
+
content: Optional[str] = None
|
|
33
|
+
tool_calls: Optional[List[Dict[str, Any]]] = Field(
|
|
34
|
+
default=None, description="Tool calls in the message (for assistant messages)"
|
|
35
|
+
)
|
|
36
|
+
tool_call_id: Optional[str] = Field(
|
|
37
|
+
default=None, description="Tool call ID (for tool role messages)"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class ChatCompletionRequest(BaseModel):
|
|
42
|
+
"""
|
|
43
|
+
POST /v1/chat/completions request schema.
|
|
44
|
+
|
|
45
|
+
Example:
|
|
46
|
+
>>> request = ChatCompletionRequest(
|
|
47
|
+
... model="gaia-code",
|
|
48
|
+
... messages=[{"role": "user", "content": "Hello"}]
|
|
49
|
+
... )
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
model: str = Field(..., description="Model ID (e.g., gaia-code, gaia-jira)")
|
|
53
|
+
messages: List[ChatMessage] = Field(..., description="Array of chat messages")
|
|
54
|
+
stream: bool = Field(default=False, description="Enable SSE streaming")
|
|
55
|
+
temperature: Optional[float] = Field(
|
|
56
|
+
default=0.7, ge=0, le=2, description="Sampling temperature"
|
|
57
|
+
)
|
|
58
|
+
max_tokens: Optional[int] = Field(
|
|
59
|
+
default=None, gt=0, description="Maximum tokens to generate"
|
|
60
|
+
)
|
|
61
|
+
top_p: Optional[float] = Field(
|
|
62
|
+
default=1.0, ge=0, le=1, description="Nucleus sampling parameter"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class ChatCompletionResponseMessage(BaseModel):
|
|
67
|
+
"""
|
|
68
|
+
Response message from chat completion.
|
|
69
|
+
|
|
70
|
+
Example:
|
|
71
|
+
>>> msg = ChatCompletionResponseMessage(
|
|
72
|
+
... role="assistant",
|
|
73
|
+
... content="Hello! How can I help?"
|
|
74
|
+
... )
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
role: Literal["assistant"]
|
|
78
|
+
content: str
|
|
79
|
+
tool_calls: Optional[List[Dict[str, Any]]] = Field(
|
|
80
|
+
default=None,
|
|
81
|
+
description="Tool calls for file operations (OpenAI-compatible format)",
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class ChatCompletionChoice(BaseModel):
|
|
86
|
+
"""
|
|
87
|
+
A single completion choice.
|
|
88
|
+
|
|
89
|
+
Example:
|
|
90
|
+
>>> choice = ChatCompletionChoice(
|
|
91
|
+
... index=0,
|
|
92
|
+
... message=ChatCompletionResponseMessage(
|
|
93
|
+
... role="assistant",
|
|
94
|
+
... content="Hello!"
|
|
95
|
+
... ),
|
|
96
|
+
... finish_reason="stop"
|
|
97
|
+
... )
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
index: int
|
|
101
|
+
message: ChatCompletionResponseMessage
|
|
102
|
+
finish_reason: Literal["stop", "length"]
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class UsageInfo(BaseModel):
|
|
106
|
+
"""
|
|
107
|
+
Token usage information.
|
|
108
|
+
|
|
109
|
+
Example:
|
|
110
|
+
>>> usage = UsageInfo(
|
|
111
|
+
... prompt_tokens=10,
|
|
112
|
+
... completion_tokens=20,
|
|
113
|
+
... total_tokens=30
|
|
114
|
+
... )
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
prompt_tokens: int
|
|
118
|
+
completion_tokens: int
|
|
119
|
+
total_tokens: int
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class ChatCompletionResponse(BaseModel):
|
|
123
|
+
"""
|
|
124
|
+
POST /v1/chat/completions response schema (non-streaming).
|
|
125
|
+
|
|
126
|
+
Example:
|
|
127
|
+
>>> response = ChatCompletionResponse(
|
|
128
|
+
... id="chatcmpl-123",
|
|
129
|
+
... object="chat.completion",
|
|
130
|
+
... created=1234567890,
|
|
131
|
+
... model="gaia-code",
|
|
132
|
+
... choices=[...],
|
|
133
|
+
... usage=UsageInfo(...)
|
|
134
|
+
... )
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
id: str
|
|
138
|
+
object: Literal["chat.completion"]
|
|
139
|
+
created: int
|
|
140
|
+
model: str
|
|
141
|
+
choices: List[ChatCompletionChoice]
|
|
142
|
+
usage: UsageInfo
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class ModelInfo(BaseModel):
|
|
146
|
+
"""
|
|
147
|
+
Model metadata for /v1/models endpoint.
|
|
148
|
+
|
|
149
|
+
Example:
|
|
150
|
+
>>> model = ModelInfo(
|
|
151
|
+
... id="gaia-code",
|
|
152
|
+
... object="model",
|
|
153
|
+
... created=1234567890,
|
|
154
|
+
... owned_by="amd-gaia",
|
|
155
|
+
... max_input_tokens=32768,
|
|
156
|
+
... max_output_tokens=8192,
|
|
157
|
+
... description="Code agent description"
|
|
158
|
+
... )
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
model_config = ConfigDict(
|
|
162
|
+
extra="allow"
|
|
163
|
+
) # Allow additional fields for extensibility
|
|
164
|
+
|
|
165
|
+
id: str
|
|
166
|
+
object: Literal["model"]
|
|
167
|
+
created: int
|
|
168
|
+
owned_by: str
|
|
169
|
+
description: Optional[str] = None
|
|
170
|
+
max_input_tokens: Optional[int] = None
|
|
171
|
+
max_output_tokens: Optional[int] = None
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class ModelListResponse(BaseModel):
|
|
175
|
+
"""
|
|
176
|
+
GET /v1/models response schema.
|
|
177
|
+
|
|
178
|
+
Example:
|
|
179
|
+
>>> response = ModelListResponse(
|
|
180
|
+
... object="list",
|
|
181
|
+
... data=[ModelInfo(...), ModelInfo(...)]
|
|
182
|
+
... )
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
object: Literal["list"]
|
|
186
|
+
data: List[ModelInfo]
|