You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
60 lines
2.0 KiB
from openai import OpenAI
|
|
import os
|
|
|
|
# 初始化OpenAI客户端
|
|
client = OpenAI(
|
|
# 请用知识引擎原子能力API Key将下行替换为:api_key="sk-xxx",
|
|
api_key="sk-fGBYaQLHykBOQsFwVrQdIFTsYr8YDtDVDQWFU41mFsmvfNPc", # 如何获取API Key:https://cloud.tencent.com/document/product/1772/115970
|
|
base_url="https://api.lkeap.cloud.tencent.com/v1",
|
|
)
|
|
|
|
|
|
def main():
|
|
reasoning_content = "" # 定义完整思考过程
|
|
answer_content = "" # 定义完整回复
|
|
is_answering = False # 判断是否结束思考过程并开始回复
|
|
|
|
# 创建聊天完成请求
|
|
stream = client.chat.completions.create(
|
|
model="deepseek-v3", # 此处以 deepseek-v3 为例,可按需更换模型名称
|
|
messages=[
|
|
{"role": "user", "content": "9.9和9.11谁大"}
|
|
],
|
|
stream=True
|
|
)
|
|
|
|
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
|
|
|
|
for chunk in stream:
|
|
# 处理usage信息
|
|
if not getattr(chunk, 'choices', None):
|
|
print("\n" + "=" * 20 + "Token 使用情况" + "=" * 20 + "\n")
|
|
print(chunk.usage)
|
|
continue
|
|
|
|
delta = chunk.choices[0].delta
|
|
|
|
# 处理空内容情况
|
|
if not getattr(delta, 'reasoning_content', None) and not getattr(delta, 'content', None):
|
|
continue
|
|
|
|
# 处理开始回答的情况
|
|
if not getattr(delta, 'reasoning_content', None) and not is_answering:
|
|
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
|
|
is_answering = True
|
|
|
|
# 处理思考过程
|
|
if getattr(delta, 'reasoning_content', None):
|
|
print(delta.reasoning_content, end='', flush=True)
|
|
reasoning_content += delta.reasoning_content
|
|
# 处理回复内容
|
|
elif getattr(delta, 'content', None):
|
|
print(delta.content, end='', flush=True)
|
|
answer_content += delta.content
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except Exception as e:
|
|
print(f"发生错误:{e}")
|
|
|