跳到主要内容

JSON 响应

通过 prompt 使模型响应 JSON 不稳定?现在你可以通过guided_json让模型以自定义的 JSON Schema 结构响应,在请求中携带guided_json参数即可,示例如下。

"guided_json": """{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户的姓名"
},
"age": {
"type": "integer",
"description": "用户的年龄"
},
"city": {
"type": "string",
"description": "用户的城市"
}
},
"required": ["name", "age", "city"]
}""",

再添加一些 prompt 提升可靠性,AI 将会根据输入提取数据生成标准的 JSON:

from langchain_openai import ChatOpenAI
model_name = "Qwen2.5-72B-Instruct"
base_url = "https://ai.gitee.com/v1"
# https://ai.gitee.com/dashboard/settings/tokens 获取你的访问令牌
GITEE_AI_API_KEY = ""
llm = ChatOpenAI(model=model_name, api_key=GITEE_AI_API_KEY, base_url=base_url, streaming=True, temperature=0.1, presence_penalty=1.05, top_p=0.9,
extra_body={
"guided_json": """{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "用户的姓名"
},
"age": {
"type": "integer",
"description": "用户的年龄"
},
"city": {
"type": "string",
"description": "用户的城市"
}
},
"required": ["name", "city"]
}"""
})

prompt = [{"role": "system", "content": "你是聪明的助手,以 json 格式输出数据,如果无法判断年龄,则 age 为 0"},
{"role": "user", "content": """
在一个风和日丽的春日午后,小马走在了北京的街头。时间是 2023年的4月15日,
正值樱花盛开的季节。作为一位热爱摄影的年轻人,他带着相机,希望能捕捉到这个季节最美的瞬间。
北京的春天总是短暂而美丽,每一处公园、每一条街道都充满了生机与活力。
"""}]

for response in llm.stream(prompt):
if (response.content):
print(response.content, end="")

输出 JSON:

{ "name": "小马", "age": 0, "city": "北京" }