Function call with finish_reason of stop

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

  1. tool_choice="required" : All 500 finish_reason: 'tool_calls'. No finish_reason: 'stop' observed.

  2. tool_choice="auto" : All 500 finish_reason: 'tool_calls'. No finish_reason: 'stop' observed.

  3. tool_choice={"type": "function", "function": {"name": "generate_simple_list"}} : All 500 responses had finish_reason: 'stop'

1 Like