我运行一些 Azure OpenAI 请求,并尝试将响应对象转换为 JSON:
#Note: This code sample requires OpenAI Python library version 1.0.0 or higher.
import json
import pprint
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = "https://xxxxxx.openai.azure.com/",
api_key='xxxxxxxxxxxxxxxxxxxxx',
api_version="2023-07-01-preview"
)
message_text = [{"role":"system","content":"You are an AI assistant that helps people find information."}]
completion = client.chat.completions.create(
model="gpt-4xxxxxxxx",
messages = message_text,
temperature=0.7,
max_tokens=800,
top_p=0.95,
frequency_penalty=0,
presence_penalty=0,
stop=None
)
print('completion:\n')
pprint.pprint(completion)
# Convert Python object to JSON
json_data = json.dumps(completion, default=lambda o: o.__dict__, indent=4)
# Print JSON
print(json_data)
查看输出,响应对象
completion
包含:
ChatCompletion(id='chatcmpl-xxxxxxxxx', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Great! How can I assist you today?', role='assistant', function_call=None, tool_calls=None), content_filter_results={'hate': {'filtered': False, 'severity': 'safe'}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}})], created=1709313222, model='gpt-4', object='chat.completion', system_fingerprint='fp_xxxxx', usage=CompletionUsage(completion_tokens=9, prompt_tokens=18, total_tokens=27), prompt_filter_results=[{'prompt_index': 0, 'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}}}])
但是缺少对应的JSON对象
prompt_filter_results
:
{
"id": "chatcmpl-xxxxxxx",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Great! How can I assist you today?",
"role": "assistant",
"function_call": null,
"tool_calls": null
}
}
],
"created": 1709313222,
"model": "gpt-4",
"object": "chat.completion",
"system_fingerprint": "fp_xxxxx",
"usage": {
"completion_tokens": 9,
"prompt_tokens": 18,
"total_tokens": 27
}
}
将 Azure OpenAI 响应对象序列化为 JSON 对象时,为什么我的响应 JSON 对象缺失
prompt_filter_results
?
函数构造的,仅包含为get_model_fields
类定义的属性数据(例如,尝试调用ChatCompletion
属性)您的model_fields
实例,它可能不包含ChatCompletion
数据)。查看prompt_filter_results
类定义,也没有定义ChatCompletion
属性。prompt_filter_results