【PythonAI】4.1.2 国产AI助手API调用简介(DeepSeek为例)
# deepseek_assistant.pyimportrequestsimportjsonclassDeepSeekAssistant:def__init__(self,api_key):self.api_keyapi_key self.base_urlhttps://api.deepseek.com# DeepSeek API地址self.headers{Authorization:fBearer{api_key},Content-Type:application/json}defchat(self,prompt,modeldeepseek-chat,temperature0.7,max_tokens2000): 发送对话请求 Args: prompt: 用户输入的问题 model: 模型名称可选 deepseek-chat 或 deepseek-reasoner temperature: 温度参数控制回复的随机性 max_tokens: 最大输出token数 Returns: str: 模型回复的内容 payload{model:model,# deepseek-chat 对应 DeepSeek-V3.2messages:[{role:system,content:你是DeepSeek一个乐于助人的AI助手。},{role:user,content:prompt}],temperature:temperature,max_tokens:max_tokens,stream:False# 非流式输出}try:responserequests.post(f{self.base_url}/chat/completions,headersself.headers,jsonpayload,timeout60)response.raise_for_status()# 如果状态码不是200抛出异常# 解析返回结果resultresponse.json()returnresult[choices][0][message][content]exceptrequests.exceptions.RequestExceptionase:returnf网络请求失败:{str(e)}exceptKeyErrorase:returnf解析响应失败:{str(e)}exceptExceptionase:returnf调用失败:{str(e)}defchat_with_history(self,messages,modeldeepseek-chat,temperature0.7): 支持多轮对话的方法 Args: messages: 消息列表格式为 [{role: user, content: ...}, ...] model: 模型名称 temperature: 温度参数 Returns: str: 模型回复的内容 payload{model:model,messages:messages,temperature:temperature,stream:False}try:responserequests.post(f{self.base_url}/chat/completions,headersself.headers,jsonpayload,timeout60)response.raise_for_status()returnresponse.json()[choices][0][message][content]exceptExceptionase:returnf调用失败:{str(e)}defstream_chat(self,prompt,modeldeepseek-chat,temperature0.7): 流式输出方法逐字显示 Args: prompt: 用户输入的问题 model: 模型名称 temperature: 温度参数 Yields: str: 逐块返回的文本内容 payload{model:model,messages:[{role:system,content:你是DeepSeek一个乐于助人的AI助手。},{role:user,content:prompt}],temperature:temperature,stream:True# 开启流式输出}try:responserequests.post(f{self.base_url}/chat/completions,headersself.headers,jsonpayload,streamTrue,timeout60)forlineinresponse.iter_lines():ifline:lineline.decode(utf-8)ifline.startswith(data: ):dataline[6:]# 去掉 data: 前缀ifdata![DONE]:try:chunkjson.loads(data)ifchoicesinchunkandlen(chunk[choices])0:deltachunk[choices][0].get(delta,{})ifcontentindelta:yielddelta[content]exceptjson.JSONDecodeError:continueexceptExceptionase:yieldf调用失败:{str(e)}# 使用示例if__name____main__:# 替换为你的DeepSeek API密钥api_keyyour-deepseek-api-key-here# 在 https://platform.deepseek.com 获取# 创建DeepSeek助手实例deepseekDeepSeekAssistant(api_key)# 示例1电商文案生成prompt 请为新疆和田大枣写一段电商详情页文案 突出沙漠阳光孕育、昆仑雪水灌溉的产地优势 字数200字左右语言要有感染力。 print(*50)print(示例1电商文案生成)print(*50)resultdeepseek.chat(prompt)print(result)# 示例2多轮对话print(\n*50)print(示例2多轮对话)print(*50)conversation[{role:system,content:你是一个专业的电商文案助手。},{role:user,content:我想为新疆和田大枣写文案它的特点是甜度高、营养丰富。},{role:assistant,content:好的我了解了。新疆和田大枣以甜度高、营养丰富著称。您希望文案突出哪些方面呢},{role:user,content:突出它的产地优势和健康价值}]result2deepseek.chat_with_history(conversation)print(result2)# 示例3流式输出可选print(\n*50)print(示例3流式输出演示)print(*50)print(DeepSeek: ,end,flushTrue)forchunkindeepseek.stream_chat(请用一句话介绍新疆和田大枣):print(chunk,end,flushTrue)print()# 换行运行结果(ai_env)$ python3 deepseek_assistant.py 示例1电商文案生成 # 昆仑雪水浇灌沙漠阳光滋养## 每一颗都是时光沉淀的甜蜜奇迹生长在世界黄金水果带——新疆和田这里拥有极致的自然馈赠每年超过3000小时的沙漠阳光让枣肉积累饱满糖分纯净的昆仑雪水灌溉赋予果实清润不腻的甘甜。 我们坚持自然挂枝成熟手工精选每一颗枣。红润饱满的枣身撕开可见金黄拉丝果肉口感厚实绵密枣香浓郁纯正。无论是直接食用、煮粥煲汤还是作为养生茶点都是天然健康的味觉享受。 ✨ 源自核心产区直达您手中 ✨ 自然熟成无添加加工 ✨ 颗颗精选锁住阳光味道 尝一口便是辽阔新疆的甜蜜馈赠。 示例2多轮对话 好的没问题。新疆和田大枣的“甜”和“营养”是其核心而“产地优势”和“健康价值”是让这两个核心点升华、更具说服力的关键。 为您精心构思了几个不同风格和用途的文案您可以根据需要选择或组合使用---### **方案一大气磅礴 · 品牌故事型**适合品牌主页、详情页头部、宣传册**标题来自“世界水果优生区”的甜蜜能量****文案**不是所有的红枣都配称为“和田大枣”。 它生长于昆仑山与塔克拉玛干沙漠之间的绿洲——新疆和田。这里每年超3000小时的日照昼夜近20度的温差以及纯净的雪水灌溉共同缔造了红枣生长的“黄金纬度”。 极致的自然条件催生出极致的果实***甜度凝聚时光**漫长的生长期让糖分充分积累甜入心扉是自然的浓缩蜜意。***营养源自天地**充沛的光合作用孕育出丰富的维生素、环磷酸腺苷及铁元素是名副其实(ai_env)$