I just ran this code to test if there have been any changes.
NOTE: This code makes 500 chat completion requests with random temperature param
import asyncio
import random
from openai import AsyncOpenAI
client = AsyncOpenAI()
tool_spec = [
{
"type": "function",
"function": {
"name": "generate_simple_list",
"parameters": {
"type": "object",
"properties": {"items": {"type": "array", "items": {"type": "string"}}},
"required": ["items"],
"additionalProperties": False,
},
},
}
]
conve = [
{
"role": "user",
"content": [
{"type": "text", "text": "Give me 3 fruits in a list."}
],
}
]
async def make_request():
temperature = random.uniform(0, 1) # Generate a random temperature between 0 and 1
response = await client.chat.completions.create(
model="gpt-4o", messages=conve, tools=tool_spec, temperature=temperature, tool_choice="required"
)
return response
async def main():
tasks = [make_request() for _ in range(500)]
responses = await asyncio.gather(*tasks)
for response in responses:
if response.choices[0].finish_reason == "stop":
print(response)
asyncio.run(main())
openai
Version: 1.53.0
Results
-
tool_choice="required"
: All 500finish_reason: 'tool_calls'
. Nofinish_reason: 'stop'
observed. -
tool_choice="auto"
: All 500finish_reason: 'tool_calls'
. Nofinish_reason: 'stop'
observed. -
tool_choice={"type": "function", "function": {"name": "generate_simple_list"}}
: All 500 responses hadfinish_reason: 'stop'