1
1
from enum import Enum
2
- from typing import Any , Optional
2
+ from typing import Any , Generic , Optional , TypeVar
3
3
4
4
from pydantic import BaseModel , Field , validator
5
5
@@ -72,9 +72,9 @@ class ToolModel(BaseModel):
72
72
metaphor : Optional [Tool ]
73
73
function : Optional [Tool ]
74
74
# ~~~~~~Assistants as tools~~~~~~
75
- superagent : Optional ["AgentTool " ]
76
- openai_assistant : Optional ["AgentTool " ]
77
- llm : Optional ["AssistantTool " ]
75
+ superagent : Optional ["BaseAssistantToolModel[SuperagentAgent] " ]
76
+ openai_assistant : Optional ["BaseAssistantToolModel[OpenAIAgent] " ]
77
+ llm : Optional ["BaseAssistantToolModel[LLMAgent] " ]
78
78
79
79
# OpenAI Assistant tools
80
80
code_interpreter : Optional [Tool ]
@@ -92,22 +92,27 @@ class Assistant(BaseModel):
92
92
intro : Optional [str ]
93
93
94
94
95
- class Agent (Assistant ):
95
+ # ~~~Agents~~~
96
+ class SuperagentAgent (Assistant ):
96
97
tools : Optional [Tools ]
97
- data : Optional [Data ]
98
+ data : Optional [Data ] # deprecated, use superrag instead
98
99
superrag : Optional [Superrag ]
99
100
100
101
101
- class BaseAssistantToolModel (BaseModel ):
102
- use_for : str
102
+ class LLMAgent (Assistant ):
103
+ tools : Optional [Tools ]
104
+ superrag : Optional [Superrag ]
103
105
104
106
105
- class AgentTool ( BaseAssistantToolModel , Agent ):
107
+ class OpenAIAgent ( Assistant ):
106
108
pass
107
109
108
110
109
- class AssistantTool (BaseAssistantToolModel , Assistant ):
110
- pass
111
+ AgentT = TypeVar ("AgentT" )
112
+
113
+
114
+ class BaseAssistantToolModel (BaseModel , Generic [AgentT ]):
115
+ use_for : str
111
116
112
117
113
118
# This is for the circular reference between Agent, Assistant and ToolModel
@@ -116,9 +121,9 @@ class AssistantTool(BaseAssistantToolModel, Assistant):
116
121
117
122
118
123
class Workflow (BaseModel ):
119
- superagent : Optional [Agent ]
120
- openai_assistant : Optional [Assistant ]
121
- llm : Optional [Assistant ]
124
+ superagent : Optional [SuperagentAgent ]
125
+ openai_assistant : Optional [OpenAIAgent ]
126
+ llm : Optional [LLMAgent ]
122
127
123
128
124
129
class WorkflowConfigModel (BaseModel ):
0 commit comments