amd-gaia 0.15.0__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.15.0.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.15.0.dist-info → amd_gaia-0.15.1.dist-info}/entry_points.txt +1 -0
- {amd_gaia-0.15.0.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 -5632
- 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.15.0.dist-info/RECORD +0 -168
- gaia/agents/code/app.py +0 -266
- gaia/llm/llm_client.py +0 -723
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.1.dist-info}/WHEEL +0 -0
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.1.dist-info}/top_level.txt +0 -0
gaia/agents/base/api_agent.py
CHANGED
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""
|
|
4
|
-
API Agent Base Class - Mixin for OpenAI API-compatible agents
|
|
5
|
-
|
|
6
|
-
This module provides ApiAgent, an optional mixin class for agents that want to be
|
|
7
|
-
exposed via the OpenAI-compatible API with custom behavior.
|
|
8
|
-
|
|
9
|
-
Inheritance patterns:
|
|
10
|
-
- CodeAgent(ApiAgent, Agent) - API-only agent
|
|
11
|
-
- DockerAgent(MCPAgent, Agent) - MCP-only agent
|
|
12
|
-
- JiraAgent(MCPAgent, ApiAgent, Agent) - Both protocols
|
|
13
|
-
- Future: FooAgent(MCPAgent, ApiAgent, Agent) - Multiple inheritance
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from typing import Any, Dict
|
|
18
|
-
|
|
19
|
-
from .agent import Agent
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class ApiAgent(Agent):
|
|
23
|
-
"""
|
|
24
|
-
Optional mixin for agents exposed via OpenAI-compatible API.
|
|
25
|
-
|
|
26
|
-
Agents that inherit from ApiAgent can customize:
|
|
27
|
-
- Model ID and metadata (get_model_id, get_model_info)
|
|
28
|
-
- Token counting (estimate_tokens)
|
|
29
|
-
- Response formatting (format_for_api)
|
|
30
|
-
|
|
31
|
-
The API server can work with ANY Agent subclass via process_query().
|
|
32
|
-
ApiAgent is only needed for customization beyond the defaults.
|
|
33
|
-
|
|
34
|
-
Usage:
|
|
35
|
-
class MyAgent(ApiAgent, Agent):
|
|
36
|
-
'''Agent exposed via API with custom behavior'''
|
|
37
|
-
pass
|
|
38
|
-
|
|
39
|
-
class MyMultiAgent(MCPAgent, ApiAgent, Agent):
|
|
40
|
-
'''Agent exposed via BOTH MCP and API protocols'''
|
|
41
|
-
pass
|
|
42
|
-
|
|
43
|
-
Example:
|
|
44
|
-
>>> class CodeAgent(ApiAgent, MCPAgent, Agent):
|
|
45
|
-
... def get_model_id(self) -> str:
|
|
46
|
-
... return "gaia-code-agent"
|
|
47
|
-
...
|
|
48
|
-
... def get_model_info(self) -> Dict:
|
|
49
|
-
... return {
|
|
50
|
-
... "max_input_tokens": 32768,
|
|
51
|
-
... "max_output_tokens": 8192
|
|
52
|
-
... }
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
def get_model_id(self) -> str:
|
|
56
|
-
"""
|
|
57
|
-
Get the OpenAI-compatible model ID for this agent.
|
|
58
|
-
|
|
59
|
-
Override to customize model ID.
|
|
60
|
-
Default: gaia-{classname} (with 'Agent' suffix removed)
|
|
61
|
-
|
|
62
|
-
Returns:
|
|
63
|
-
Model ID string (e.g., "gaia-code", "gaia-jira")
|
|
64
|
-
|
|
65
|
-
Example:
|
|
66
|
-
CodeAgent -> gaia-code
|
|
67
|
-
JiraAgent -> gaia-jira
|
|
68
|
-
DockerAgent -> gaia-docker
|
|
69
|
-
"""
|
|
70
|
-
# All agents follow *Agent naming convention, strip "Agent" suffix
|
|
71
|
-
class_name = self.__class__.__name__[:-5].lower() # Remove "Agent"
|
|
72
|
-
return f"gaia-{class_name}"
|
|
73
|
-
|
|
74
|
-
def get_model_info(self) -> Dict[str, Any]:
|
|
75
|
-
"""
|
|
76
|
-
Get model metadata for /v1/models endpoint.
|
|
77
|
-
|
|
78
|
-
Override to provide custom metadata about the model's capabilities.
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
Dictionary with model metadata:
|
|
82
|
-
- max_input_tokens: Maximum input context size
|
|
83
|
-
- max_output_tokens: Maximum output length
|
|
84
|
-
- description (optional): Human-readable description
|
|
85
|
-
- Any other custom metadata
|
|
86
|
-
|
|
87
|
-
Example:
|
|
88
|
-
>>> def get_model_info(self):
|
|
89
|
-
... return {
|
|
90
|
-
... "max_input_tokens": 32768,
|
|
91
|
-
... "max_output_tokens": 8192,
|
|
92
|
-
... "description": "Autonomous Python coding agent"
|
|
93
|
-
... }
|
|
94
|
-
"""
|
|
95
|
-
return {
|
|
96
|
-
"max_input_tokens": 8192,
|
|
97
|
-
"max_output_tokens": 4096,
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
def estimate_tokens(self, text: str) -> int:
|
|
101
|
-
"""
|
|
102
|
-
Estimate token count for text.
|
|
103
|
-
|
|
104
|
-
Override for model-specific tokenization.
|
|
105
|
-
Default: Simple char count / 4 heuristic (works reasonably for English)
|
|
106
|
-
|
|
107
|
-
Args:
|
|
108
|
-
text: Input text to count tokens for
|
|
109
|
-
|
|
110
|
-
Returns:
|
|
111
|
-
Estimated token count
|
|
112
|
-
|
|
113
|
-
Example:
|
|
114
|
-
>>> def estimate_tokens(self, text: str) -> int:
|
|
115
|
-
... # Use tiktoken for accurate GPT-style counting
|
|
116
|
-
... import tiktoken
|
|
117
|
-
... enc = tiktoken.get_encoding("cl100k_base")
|
|
118
|
-
... return len(enc.encode(text))
|
|
119
|
-
"""
|
|
120
|
-
return len(text) // 4
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""
|
|
4
|
+
API Agent Base Class - Mixin for OpenAI API-compatible agents
|
|
5
|
+
|
|
6
|
+
This module provides ApiAgent, an optional mixin class for agents that want to be
|
|
7
|
+
exposed via the OpenAI-compatible API with custom behavior.
|
|
8
|
+
|
|
9
|
+
Inheritance patterns:
|
|
10
|
+
- CodeAgent(ApiAgent, Agent) - API-only agent
|
|
11
|
+
- DockerAgent(MCPAgent, Agent) - MCP-only agent
|
|
12
|
+
- JiraAgent(MCPAgent, ApiAgent, Agent) - Both protocols
|
|
13
|
+
- Future: FooAgent(MCPAgent, ApiAgent, Agent) - Multiple inheritance
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from typing import Any, Dict
|
|
18
|
+
|
|
19
|
+
from .agent import Agent
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ApiAgent(Agent):
|
|
23
|
+
"""
|
|
24
|
+
Optional mixin for agents exposed via OpenAI-compatible API.
|
|
25
|
+
|
|
26
|
+
Agents that inherit from ApiAgent can customize:
|
|
27
|
+
- Model ID and metadata (get_model_id, get_model_info)
|
|
28
|
+
- Token counting (estimate_tokens)
|
|
29
|
+
- Response formatting (format_for_api)
|
|
30
|
+
|
|
31
|
+
The API server can work with ANY Agent subclass via process_query().
|
|
32
|
+
ApiAgent is only needed for customization beyond the defaults.
|
|
33
|
+
|
|
34
|
+
Usage:
|
|
35
|
+
class MyAgent(ApiAgent, Agent):
|
|
36
|
+
'''Agent exposed via API with custom behavior'''
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
class MyMultiAgent(MCPAgent, ApiAgent, Agent):
|
|
40
|
+
'''Agent exposed via BOTH MCP and API protocols'''
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
Example:
|
|
44
|
+
>>> class CodeAgent(ApiAgent, MCPAgent, Agent):
|
|
45
|
+
... def get_model_id(self) -> str:
|
|
46
|
+
... return "gaia-code-agent"
|
|
47
|
+
...
|
|
48
|
+
... def get_model_info(self) -> Dict:
|
|
49
|
+
... return {
|
|
50
|
+
... "max_input_tokens": 32768,
|
|
51
|
+
... "max_output_tokens": 8192
|
|
52
|
+
... }
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def get_model_id(self) -> str:
|
|
56
|
+
"""
|
|
57
|
+
Get the OpenAI-compatible model ID for this agent.
|
|
58
|
+
|
|
59
|
+
Override to customize model ID.
|
|
60
|
+
Default: gaia-{classname} (with 'Agent' suffix removed)
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
Model ID string (e.g., "gaia-code", "gaia-jira")
|
|
64
|
+
|
|
65
|
+
Example:
|
|
66
|
+
CodeAgent -> gaia-code
|
|
67
|
+
JiraAgent -> gaia-jira
|
|
68
|
+
DockerAgent -> gaia-docker
|
|
69
|
+
"""
|
|
70
|
+
# All agents follow *Agent naming convention, strip "Agent" suffix
|
|
71
|
+
class_name = self.__class__.__name__[:-5].lower() # Remove "Agent"
|
|
72
|
+
return f"gaia-{class_name}"
|
|
73
|
+
|
|
74
|
+
def get_model_info(self) -> Dict[str, Any]:
|
|
75
|
+
"""
|
|
76
|
+
Get model metadata for /v1/models endpoint.
|
|
77
|
+
|
|
78
|
+
Override to provide custom metadata about the model's capabilities.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
Dictionary with model metadata:
|
|
82
|
+
- max_input_tokens: Maximum input context size
|
|
83
|
+
- max_output_tokens: Maximum output length
|
|
84
|
+
- description (optional): Human-readable description
|
|
85
|
+
- Any other custom metadata
|
|
86
|
+
|
|
87
|
+
Example:
|
|
88
|
+
>>> def get_model_info(self):
|
|
89
|
+
... return {
|
|
90
|
+
... "max_input_tokens": 32768,
|
|
91
|
+
... "max_output_tokens": 8192,
|
|
92
|
+
... "description": "Autonomous Python coding agent"
|
|
93
|
+
... }
|
|
94
|
+
"""
|
|
95
|
+
return {
|
|
96
|
+
"max_input_tokens": 8192,
|
|
97
|
+
"max_output_tokens": 4096,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
def estimate_tokens(self, text: str) -> int:
|
|
101
|
+
"""
|
|
102
|
+
Estimate token count for text.
|
|
103
|
+
|
|
104
|
+
Override for model-specific tokenization.
|
|
105
|
+
Default: Simple char count / 4 heuristic (works reasonably for English)
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
text: Input text to count tokens for
|
|
109
|
+
|
|
110
|
+
Returns:
|
|
111
|
+
Estimated token count
|
|
112
|
+
|
|
113
|
+
Example:
|
|
114
|
+
>>> def estimate_tokens(self, text: str) -> int:
|
|
115
|
+
... # Use tiktoken for accurate GPT-style counting
|
|
116
|
+
... import tiktoken
|
|
117
|
+
... enc = tiktoken.get_encoding("cl100k_base")
|
|
118
|
+
... return len(enc.encode(text))
|
|
119
|
+
"""
|
|
120
|
+
return len(text) // 4
|