将 Azure OpenAI 响应对象序列化为 JSON 对象时,为什么我的响应 JSON 对象缺少“prompt_filter_results”?

问题描述 投票:0回答:1

我运行一些 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

python json serialization azure-openai
1个回答
0
投票

Reddit 用户Oxbowerce给出了以下答案

这似乎是由于 json 对象是通过调用

get_model_fields
函数构造的,仅包含为
ChatCompletion
类定义的属性数据
(例如,尝试调用
model_fields
属性)您的
ChatCompletion
实例,它可能不包含
prompt_filter_results
数据)。查看
ChatCompletion
类定义
,也没有定义
prompt_filter_results
属性。

© www.soinside.com 2019 - 2024. All rights reserved.