{ "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_fnLCINMisiDQQG8STLvbl6Gk", "type": "function", "function": { "name": "get_user_id", "arguments": "{\"username\":\"alice\"}" } } ] }, { "role": "tool", "tool_call_id": "call_fnLCINMisiDQQG8STLvbl6Gk", "content": [ { "type": "text", "text": "user_12345" } ] }, { "role": "assistant", "content": "", "tool_calls": [ { "index": 0, "id": "call_c3ieDCBS1Emj2nTSW1UCbAyV", "type": "function", "function": { "name": "check_file_access", "arguments": "{\"user_id\":\"user_12345\",\"filename\":\"document.txt\"}" } } ] }, { "role": "tool", "tool_call_id": "call_c3ieDCBS1Emj2nTSW1UCbAyV", "content": [ { "type": "text", "text": "yes" } ] } ], "stream": true, "stream_options": { "include_usage": 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-5aeaaad09c5d", "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_eb3c3cb84d", "usage": null, "obfuscation": "a5pIXxl2lgr6TG" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "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_eb3c3cb84d", "usage": null, "obfuscation": "XJfV8tzNeoauA" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": ",", "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_eb3c3cb84d", "usage": null, "obfuscation": "rbizWK7ZLkM3BOK" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " user", "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_eb3c3cb84d", "usage": null, "obfuscation": "rx9NjptNspv" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " '", "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_eb3c3cb84d", "usage": null, "obfuscation": "Y4ErhOk8yRZCjY" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": "alice", "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_eb3c3cb84d", "usage": null, "obfuscation": "FoaEQqV0zgX" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": "'", "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_eb3c3cb84d", "usage": null, "obfuscation": "ys85pAhBO1WUHjU" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " can", "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_eb3c3cb84d", "usage": null, "obfuscation": "z64xA6KLVTVR" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " access", "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_eb3c3cb84d", "usage": null, "obfuscation": "bPMkmPNH3" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " the", "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_eb3c3cb84d", "usage": null, "obfuscation": "eiOrbcwFCqB1" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " file", "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_eb3c3cb84d", "usage": null, "obfuscation": "hoseZd89daB" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": " '", "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_eb3c3cb84d", "usage": null, "obfuscation": "rqNYHfbLTsF58g" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": "document", "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_eb3c3cb84d", "usage": null, "obfuscation": "TFqE0hyy" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": ".txt", "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_eb3c3cb84d", "usage": null, "obfuscation": "OPjG4tKn345K" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [ { "delta": { "content": "'.", "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_eb3c3cb84d", "usage": null, "obfuscation": "JugMYJN8iWnp1G" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "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_eb3c3cb84d", "usage": null, "obfuscation": "nHtjqug8pd" } }, { "__type__": "openai.types.chat.chat_completion_chunk.ChatCompletionChunk", "__data__": { "id": "rec-5aeaaad09c5d", "choices": [], "created": 0, "model": "gpt-4o-2024-08-06", "object": "chat.completion.chunk", "service_tier": "default", "system_fingerprint": "fp_eb3c3cb84d", "usage": { "completion_tokens": 15, "prompt_tokens": 516, "total_tokens": 531, "completion_tokens_details": { "accepted_prediction_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 0, "rejected_prediction_tokens": 0 }, "prompt_tokens_details": { "audio_tokens": 0, "cached_tokens": 0 } }, "obfuscation": "b6G2kFhOl79Eg" } } ], "is_streaming": true }, "id_normalization_mapping": {} }