-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
System Info
I am testing using the TGI Tool Call.
But The error continues to occur, can you check it?
Information
- Docker
- The CLI directly
Tasks
- An officially supported command
- My own modifications
Reproduction
from openai import OpenAI
import json
from openai.types.chat import ChatCompletion, ChatCompletionMessageToolCall
from openai.types.chat.chat_completion import ChatCompletionMessage, Choice
from openai.types.completion_usage import CompletionUsage
client = OpenAI(base_url="http://0.0.0.0/v1", api_key="not-used")
MODEL_NAME = "Meta-Llama-3.1-8B-Instruct"
# Define available function
weather_tool = {
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use. Infer this from the user's location."
}
},
"required": ["location", "format"]
}
}
}
messages = [
{
"role": "system",
"content": f"[AVAILABLE_TOOLS] {json.dumps(weather_tool)} [/AVAILABLE_TOOLS]"
"You're a helpful assistant! Use tools if necessary, and reply in a JSON format",
},
{
"role": "user",
"content": "Is it hot in Pittsburgh, PA right now? long answer please"
}
]
chat_response = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
tools=[weather_tool],
tool_choice="auto",
stream=False
)
assistant_message = chat_response.choices[0].message
messages.append(assistant_message)
#Expected `str` but got `dict` - serialized value may not be as expected
#Example output:
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_abc123', function=Function(arguments='{"location": "Pittsburgh, PA", "format": "fahrenheit"}', name='get_current_weather'), type='function')])
tool_call_result = 88
tool_call_id = assistant_message.tool_calls[0].id
tool_function_name = assistant_message.tool_calls[0].function.name
messages.append({"role": "tool", "content": str(tool_call_result), "tool_call_id": tool_call_id, "name": tool_function_name})
chat_response = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
tools=[weather_tool],
tool_choice="auto",
stream=False
)
assistant_message = chat_response.choices[0].message
print(chat_response)
# Example output:
# ChatCompletionMessage(content='Based on the current temperature of 88°F (31°C) in Pittsburgh, PA, it is indeed quite hot right now. This temperature is generally considered warm to hot, especially if accompanied by high humidity, which is common in Pittsburgh during summer months.', role='assistant', function_call=None, tool_calls=None)
Expected behavior
UnprocessableEntityError: Failed to deserialize the JSON body into the target type: messages[2].content: data did not match any variant of untagged enum MessageContent at line 1 column 675
dlyz, moruga123 and dtretyakov
Metadata
Metadata
Assignees
Labels
No labels