{ "test_id": "tests/integration/responses/test_tool_responses.py::test_response_non_streaming_multi_turn_tool_execution[client_with_models-txt=openai/gpt-4o-user_file_access_check]", "request": { "method": "POST", "url": "https://api.openai.com/v1/v1/chat/completions", "headers": {}, "body": { "model": "gpt-4o", "messages": [ { "role": "user", "content": "I need to check if user 'alice' can access the file 'document.txt'. First, get alice's user ID, then check if that user ID can access the file 'document.txt'. Do this as a series of steps, where each step is a separate message. Return only one tool call per step. Summarize the final result with a single 'yes' or 'no' response." }, { "role": "assistant", "content": "", "tool_calls": [ { "index": 0, "id": "call_YwdbhUad8cJJrVELSGDp1LVy", "type": "function", "function": { "name": "get_user_id", "arguments": "{\"username\":\"alice\"}" } } ] }, { "role": "tool", "tool_call_id": "call_YwdbhUad8cJJrVELSGDp1LVy", "content": [ { "type": "text", "text": "user_12345" } ] }, { "role": "assistant", "content": "", "tool_calls": [ { "index": 0, "id": "call_3ysT7xrDNekJNAdUWOlMExNW", "type": "function", "function": { "name": "check_file_access", "arguments": "{\"filename\":\"document.txt\",\"user_id\":\"user_12345\"}" } } ] }, { "role": "tool", "tool_call_id": "call_3ysT7xrDNekJNAdUWOlMExNW", "content": [ { "type": "text", "text": "yes" } ] } ], "stream": true, "tools": [ { "type": "function", "function": { "name": "get_user_id", "description": "\n Get the user ID for a given username. This ID is needed for other operations.\n\n :param username: The username to look up\n :return: The user ID for the username\n ", "parameters": { "properties": { "username": { "title": "Username", "type": "string" } }, "required": [ "username" ], "title": "get_user_idArguments", "type": "object" } } }, { "type": "function", "function": { "name": "get_user_permissions", "description": "\n Get the permissions for a user ID. Requires a valid user ID from get_user_id.\n\n :param user_id: The user ID to check permissions for\n :return: The permissions for the user\n ", "parameters": { "properties": { "user_id": { "title": "User Id", "type": "string" } }, "required": [ "user_id" ], "title": "get_user_permissionsArguments", "type": "object" } } }, { "type": "function", "function": { "name": "check_file_access", "description": "\n Check if a user can access a specific file. Requires a valid user ID.\n\n :param user_id: The user ID to check access for\n :param filename: The filename to check access to\n :return: Whether the user can access the file (yes/no)\n ", "parameters": { "properties": { "user_id": { "title": "User Id", "type": "string" }, "filename": { "title": "Filename", "type": "string" } }, "required": [ "user_id", "filename" ], "title": "check_file_accessArguments", "type": "object" } } }, { "type": "function", "function": { "name": "get_experiment_id", "description": "\n Get the experiment ID for a given experiment name. This ID is needed to get results.\n\n :param experiment_name: The name of the experiment\n :return: The experiment ID\n ", "parameters": { "properties": { "experiment_name": { "title": "Experiment Name", "type": "string" } }, "required": [ "experiment_name" ], "title": "get_experiment_idArguments", "type": "object" } } }, { "type": "function", "function": { "name": "get_experiment_results", "description": "\n Get the results for an experiment ID. Requires a valid experiment ID from get_experiment_id.\n\n :param experiment_id: The experiment ID to get results for\n :return: The experiment results\n ", "parameters": { "properties": { "experiment_id": { "title": "Experiment Id", "type": "string" } }, "required": [ "experiment_id" ], "title": "get_experiment_resultsArguments", "type": "object" } } } ] }, "endpoint": "/v1/chat/completions", "model": "gpt-4o" }, "response": { "body": [ { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-0886826933da", "choices": [ { "delta": { "content": "", "function_call": null, "refusal": null, "role": "assistant", "tool_calls": null }, "finish_reason": null, "index": 0, "logprobs": null } ], "created": 0, "model": "gpt-4o-2024-08-06", "object": "chat.completion.chunk", "service_tier": "default", "system_fingerprint": "fp_f33640a400", "usage": null, "obfuscation": "9LMcG2tdXow" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-0886826933da", "choices": [ { "delta": { "content": "yes", "function_call": null, "refusal": null, "role": null, "tool_calls": null }, "finish_reason": null, "index": 0, "logprobs": null } ], "created": 0, "model": "gpt-4o-2024-08-06", "object": "chat.completion.chunk", "service_tier": "default", "system_fingerprint": "fp_f33640a400", "usage": null, "obfuscation": "bfG19EJtJj" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-0886826933da", "choices": [ { "delta": { "content": null, "function_call": null, "refusal": null, "role": null, "tool_calls": null }, "finish_reason": "stop", "index": 0, "logprobs": null } ], "created": 0, "model": "gpt-4o-2024-08-06", "object": "chat.completion.chunk", "service_tier": "default", "system_fingerprint": "fp_f33640a400", "usage": null, "obfuscation": "yLoW5qx" } } ], "is_streaming": true } }