aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Reinier van der Leer <pwuts@agpt.co> 2024-02-20 13:04:55 +0100
committerGravatar Reinier van der Leer <pwuts@agpt.co> 2024-02-20 13:04:55 +0100
commit7689a51f538190306652967e693389017c854c7a (patch)
treed55cbe23c7c3808d734acf4e3cbe021088ab6ada
parentfix(ci/benchmark): Specify poetry env path for report conversion step (diff)
downloadAuto-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.py7
-rw-r--r--autogpts/autogpt/autogpt/core/resource/model_providers/schema.py2
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):