Skip to content

Commit 5132154

Browse files
authored
Update SAML schema to support tools in oss llms (#849)
1 parent 2a59f38 commit 5132154

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

libs/superagent/app/api/workflow_configs/saml_schema.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from enum import Enum
2-
from typing import Any, Optional
2+
from typing import Any, Generic, Optional, TypeVar
33

44
from pydantic import BaseModel, Field, validator
55

@@ -72,9 +72,9 @@ class ToolModel(BaseModel):
7272
metaphor: Optional[Tool]
7373
function: Optional[Tool]
7474
# ~~~~~~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]"]
7878

7979
# OpenAI Assistant tools
8080
code_interpreter: Optional[Tool]
@@ -92,22 +92,27 @@ class Assistant(BaseModel):
9292
intro: Optional[str]
9393

9494

95-
class Agent(Assistant):
95+
# ~~~Agents~~~
96+
class SuperagentAgent(Assistant):
9697
tools: Optional[Tools]
97-
data: Optional[Data]
98+
data: Optional[Data] # deprecated, use superrag instead
9899
superrag: Optional[Superrag]
99100

100101

101-
class BaseAssistantToolModel(BaseModel):
102-
use_for: str
102+
class LLMAgent(Assistant):
103+
tools: Optional[Tools]
104+
superrag: Optional[Superrag]
103105

104106

105-
class AgentTool(BaseAssistantToolModel, Agent):
107+
class OpenAIAgent(Assistant):
106108
pass
107109

108110

109-
class AssistantTool(BaseAssistantToolModel, Assistant):
110-
pass
111+
AgentT = TypeVar("AgentT")
112+
113+
114+
class BaseAssistantToolModel(BaseModel, Generic[AgentT]):
115+
use_for: str
111116

112117

113118
# This is for the circular reference between Agent, Assistant and ToolModel
@@ -116,9 +121,9 @@ class AssistantTool(BaseAssistantToolModel, Assistant):
116121

117122

118123
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]
122127

123128

124129
class WorkflowConfigModel(BaseModel):

libs/superagent/app/api/workflow_configs/validator.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def validate(self):
1515
self.validate_superrag_names()
1616

1717
def validate_assistant_names(self):
18-
assistants = self.config.get("workflows", [])
18+
assistants = self.config.get("workflows") or []
1919
assistant_names = []
2020

2121
for new_assistant in assistants:
@@ -30,13 +30,13 @@ def validate_assistant_names(self):
3030
assistant_names.append(assistant_name)
3131

3232
def validate_tool_names(self):
33-
assistants = self.config.get("workflows", [])
33+
assistants = self.config.get("workflows") or []
3434

3535
for new_assistant in assistants:
3636
assistant_type = get_first_non_null_key(new_assistant)
3737
assistant = new_assistant.get(assistant_type)
3838

39-
tools = assistant.get("tools", [])
39+
tools = assistant.get("tools") or []
4040
tool_names = []
4141

4242
for tool in tools:
@@ -51,7 +51,7 @@ def validate_tool_names(self):
5151
tool_names.append(tool_name)
5252

5353
def validate_superrag_names(self):
54-
assistants = self.config.get("workflows", [])
54+
assistants = self.config.get("workflows") or []
5555

5656
for new_assistant in assistants:
5757
assistant_type = get_first_non_null_key(new_assistant)

0 commit comments

Comments
 (0)