diff options
author | Reinier van der Leer <pwuts@agpt.co> | 2024-02-20 13:04:55 +0100 |
---|---|---|
committer | Reinier van der Leer <pwuts@agpt.co> | 2024-02-20 13:04:55 +0100 |
commit | 7689a51f538190306652967e693389017c854c7a (patch) | |
tree | d55cbe23c7c3808d734acf4e3cbe021088ab6ada | |
parent | fix(ci/benchmark): Specify poetry env path for report conversion step (diff) | |
download | Auto-GPT-7689a51f538190306652967e693389017c854c7a.tar.gz Auto-GPT-7689a51f538190306652967e693389017c854c7a.tar.bz2 Auto-GPT-7689a51f538190306652967e693389017c854c7a.zip |
fix(autogpt/llm): Omit `AssistantChatMessage.tool_calls` if no tool calls are present
OpenAI likes neither `tool_calls=[]` nor `tool_calls=None`. If no `tool_calls` are in the message, the key must be omitted.
This partially reverts commit 67bafa6302b9729bb9fadf0bbecdb73a395cd78e.
---
Co-authored-by: kcze <kpczerwinski@gmail.com>
-rw-r--r-- | autogpts/autogpt/autogpt/core/resource/model_providers/openai.py | 7 | ||||
-rw-r--r-- | autogpts/autogpt/autogpt/core/resource/model_providers/schema.py | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py b/autogpts/autogpt/autogpt/core/resource/model_providers/openai.py index 16180f423..3b92cb32f 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 list() + else None ), ) response = ChatModelResponse( @@ -570,7 +570,10 @@ class OpenAIProvider( messages: list[ChatMessage], *_, **kwargs ) -> ChatCompletion: raw_messages = [ - message.dict(include={"role", "content", "tool_calls", "name"}) + message.dict( + include={"role", "content", "tool_calls", "name"}, + exclude_none=True, + ) for message in messages ] return await self._client.chat.completions.create( diff --git a/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py b/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py index ec6e8eea0..a600e64ab 100644 --- a/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py +++ b/autogpts/autogpt/autogpt/core/resource/model_providers/schema.py @@ -91,7 +91,7 @@ class AssistantToolCallDict(TypedDict): class AssistantChatMessage(ChatMessage): role: Literal["assistant"] = "assistant" content: Optional[str] - tool_calls: list[AssistantToolCall] = Field(default_factory=list) + tool_calls: Optional[list[AssistantToolCall]] = None class AssistantChatMessageDict(TypedDict, total=False): |