1.获取客户端对象
from = openai ipmort OpenAI
client:OpenAI=OpenAI(
api_key="your_api_key_here",
base_url=" "
主要是用以上两个参数:
- api_key:模型服务商提供的APIKEY密钥
- base_url:模型服务商的API接入地址,主要基于此参数来切换不同的模型服务商
2.调用模型
from openai.types.chat.chat_completion import ChatCompletion
response:ChatCompletion = client.chat.completion.create(
modle = "quwen3-max",
messages = [
{"role":"system","content":"你是一个Python编程专家。"},
{"role":"system","content":"我是一个Python编程专家,请问有什么可以帮助你的吗?"},
{"role":"user","content":"for循环输出1到10的数字"}
]
)
client.chat.completion.create创建ChatCompletion对象
主要参数有两个:
- modle:选择所用模型
- message:提供给模型的消息,类型:list,可以包含多个字典消息(可迭代对象,iterable)。每个字典消息包含两个key,role:角色,content:内容。
- system角色:设定助手的整体行为,角色和规则,为对话提供上下文,框架是全局的背景设定,影响后续所有交互。
- assistant角色:代表AI助手的回答
- user角色:代表用户发送问题,指令或需求。
3.处理结果
response变量就是ChatCompletion对象,其包含信息如下:
{
"id":"chatcmpl-xxxx",
"object":"chat.completion",
"created":1735689600,
"modele":"gpt-3.5-turbo-0125",
"choice":[
{
"index":0,
"message":{
"role":"assistant",
"content":"生成的回复内容"
},
"finish_reason":"stop" #stop=正常结束,length=令牌数超限,function_call=触发函数调用
}
],
"usage";{#令牌消耗统计
"prompt_tokens":50,
"completion_tokens":80,
"total_tokens":130
}
}
可以通过
print(response.choice[0].message.content)
输出模型给出的回答新信息
4.OpenAI库的流式输出
可以设定结果输出为stream模式(流式输出),获得更好的使用体验
开启流式输出的主要就两步:
-
在client.chat.completions.create()调用模型的时候设定参数:stream=True
-
for循环response对象,并在循环输出内容
for chunk in response:
if chunk.choices and len(chunk.choices)>0:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
补充:Json格式
Json是带有格式的字符串,主要用于数据交换,即程序和程序之间的信息交互。
Json主要有两种结构:
Json对象:
{
"key":value,
"key":value
}
- key:必须是字符串
- value:可以是数字,字符串,列表,Josn数组或Json对象
Json数组:
[{},{},{},...]
即一堆Json对象的组合体
Python中使用Json
Json在Python中,就是字典和列表套字典的字符串表现形式。
Python中使用Json主要完成:
- 将Python字典,列表转换成Json字符串
- 读取Json字符串,转换为Python字典或列表
主要使用Python内置的Json库:
- json.dumps(字典或列表,ensure_ascii=False):将字典或列表转换为Json字符串,返回值:Json字符串。
- json.loads(json字符串):将字符串转换Python字典或列表,返回值:Python字典或Python列表。