diff --git a/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py b/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py index 3f7457e8ae..16180f4233 100644 --- a/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py +++ b/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py @@ -423,7 +423,7 @@ class OpenAIProvider( tool_calls=( [AssistantToolCall(**tc.dict()) for tc in _assistant_msg.tool_calls] if _assistant_msg.tool_calls - else None + else list() ), ) response = ChatModelResponse( diff --git a/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py b/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py index d220fbbbee..ec6e8eea0c 100644 --- a/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py +++ b/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py @@ -44,16 +44,14 @@ class ChatMessage(BaseModel): SYSTEM = "system" ASSISTANT = "assistant" + TOOL = "tool" + """May be used for the result of tool calls""" FUNCTION = "function" """May be used for the return value of function calls""" role: Role content: str - @staticmethod - def assistant(content: str) -> "ChatMessage": - return ChatMessage(role=ChatMessage.Role.ASSISTANT, content=content) - @staticmethod def user(content: str) -> "ChatMessage": return ChatMessage(role=ChatMessage.Role.USER, content=content) @@ -93,7 +91,7 @@ class AssistantToolCallDict(TypedDict): class AssistantChatMessage(ChatMessage): role: Literal["assistant"] = "assistant" content: Optional[str] - tool_calls: Optional[list[AssistantToolCall]] + tool_calls: list[AssistantToolCall] = Field(default_factory=list) class AssistantChatMessageDict(TypedDict, total=False):