用Python接入百炼大模型做AI对话

张开发
2026/4/7 10:44:11 15 分钟阅读

分享文章

用Python接入百炼大模型做AI对话
要在Python中接入阿里云百炼平台的大模型实现类似于OpenAI的AI对话功能可以通过百炼平台提供的OpenAI兼容接口来完成。这种方式使得习惯使用OpenAI API的开发者能够平滑过渡。一、 前期准备工作在编写代码之前需要在阿里云百炼平台上完成必要的配置。主要步骤如下表所示步骤操作内容关键产出1. 注册与开通访问阿里云官网开通百炼服务并完成实名认证。阿里云百炼平台访问权限。2. 创建应用在百炼控制台选择模型如qwen-plus或deepseek-r1创建应用。应用的App Key。3. 获取密钥在应用详情页面查看并保存API调用信息。API Key、Base URL。4. 环境准备确保本地Python环境推荐3.8并安装openai包。pip install openai二、 Python代码对接详解百炼平台提供了标准的OpenAI SDK兼容接口。其Base URL通常为https://dashscope.aliyuncs.com/compatible-mode/v1你可以通过openai库直接调用。1. 基础对话调用示例下面的代码展示了如何使用Python调用百炼平台上的模型进行单轮对话。# 导入OpenAI库百炼平台兼容其接口 from openai import OpenAI # 初始化客户端 client OpenAI( api_keyyour_api_key_here, # 替换为百炼平台应用的API Key base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 # 百炼的OpenAI兼容端点 ) def simple_chat(): 进行一轮简单的AI对话 try: response client.chat.completions.create( modelqwen-max, # 指定模型如 qwen-max, deepseek-r1 等 messages[ {role: system, content: 你是一个乐于助人的AI助手。}, # 设定系统角色 {role: user, content: 请用Python写一个计算斐波那契数列的函数。} # 用户输入 ], temperature0.7, # 控制生成文本的随机性 max_tokens1000 # 控制生成回复的最大长度 ) # 打印AI的回复 print(AI回复) print(response.choices[0].message.content) # 打印本次请求消耗的Token数等信息如有 if hasattr(response, usage): print(f消耗Token: {response.usage.total_tokens}) except Exception as e: print(f调用API时发生错误: {e}) if __name__ __main__: simple_chat()2. 实现多轮对话多轮对话的核心是维护一个消息历史列表messages并在每次请求时将其完整传入模型会根据完整的上下文生成回复。def multi_turn_chat(): 模拟多轮对话维护上下文历史 client OpenAI( api_keyyour_api_key_here, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) # 初始化对话历史 conversation_history [ {role: system, content: 你是一个资深软件工程师擅长解释技术问题。} ] print(多轮对话开始 (输入 退出 结束):) while True: user_input input( 我: ) if user_input.lower() in [退出, exit, quit]: print(对话结束。) break # 将用户本轮输入加入历史 conversation_history.append({role: user, content: user_input}) try: # 将整个对话历史发送给模型 response client.chat.completions.create( modelqwen-max, messagesconversation_history, temperature0.8 ) ai_reply response.choices[0].message.content print(fAI: {ai_reply}) # 将AI的回复也加入历史以供后续对话使用 conversation_history.append({role: assistant, content: ai_reply}) except Exception as e: print(f对话出错: {e}) # 可选移除刚才添加的用户输入防止错误历史累积 conversation_history.pop() # 调用函数开始多轮对话 # multi_turn_chat()3. 实现流式输出 (Streaming)对于需要长时间生成或希望实时看到生成过程的场景可以使用流式输出。这种方式可以逐片段chunk获取回复提升用户体验。def streaming_chat(): 使用流式输出进行对话回复逐个token实时显示 client OpenAI( api_keyyour_api_key_here, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) user_question 请详细解释一下什么是Python的生成器(Generator)。 print(f用户提问: {user_question} ) print(AI流式回复: , end, flushTrue) try: # 关键设置 streamTrue 以启用流式响应 stream client.chat.completions.create( modeldeepseek-r1, # 以DeepSeek-R1为例 messages[{role: user, content: user_question}], streamTrue, # 启用流式输出 temperature0.7 ) full_reply for chunk in stream: # 检查chunk中是否有新的内容片段 if chunk.choices[0].delta.content is not None: content_piece chunk.choices[0].delta.content print(content_piece, end, flushTrue) # 逐片段打印不换行 full_reply content_piece print( --- 流式输出完成 ---) # 此处full_reply变量包含了完整的回复可用于后续处理 except Exception as e: print(f 流式请求过程中发生错误: {e}) # 调用函数体验流式输出 # streaming_chat()三、 高级配置与最佳实践1. 参数调优模型调用时可以通过参数控制生成效果常用参数如下参数类型说明与建议值modelstring指定模型如qwen-max,qwen-plus,deepseek-r1。temperaturefloat采样温度 (0.0~2.0)。值越低输出越确定越高越随机。创意写作可用0.9代码生成建议0.2。max_tokensinteger回复的最大token数。需预留足够空间避免回答被截断。top_pfloat核采样概率 (0.0~1.0)。与temperature二选一通常调整其一即可。streamboolean是否启用流式输出默认为False。2. 错误处理与重试健壮的生产代码需要包含完善的错误处理和重试机制。import time from openai import OpenAI, APIError, RateLimitError client OpenAI(api_keyyour_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1) def robust_api_call(prompt, max_retries3): 带指数退避重试机制的API调用函数 messages [{role: user, content: prompt}] for attempt in range(max_retries): try: response client.chat.completions.create( modelqwen-max, messagesmessages, temperature0.7 ) return response.choices[0].message.content except RateLimitError as e: # 处理速率限制错误 wait_time 2 ** attempt # 指数退避1, 2, 4秒... print(f触发速率限制第{attempt1}次重试等待{wait_time}秒...) time.sleep(wait_time) except APIError as e: # 处理其他API错误 print(fAPI调用失败 (尝试 {attempt1}/{max_retries}): {e}) if attempt max_retries - 1: # 最后一次尝试也失败 raise e time.sleep(1) # 简单等待后重试 except Exception as e: # 处理其他未知异常 print(f发生未知错误: {e}) return None return None # 所有重试均失败3. 实际应用场景基于上述基础可以构建复杂的AI应用例如智能客服机器人结合知识库与多轮对话能力。代码助手集成到Cursor等编辑器通过MCPModel Context Protocol协议接入百炼模型辅助代码编写与调试。内容创作利用流式输出实现交互式故事生成或文章撰写。总结通过阿里云百炼平台的OpenAI兼容接口你可以使用熟悉的openaiPython库快速接入其强大的大模型。核心步骤包括初始化客户端指定百炼的Base URL和API Key、构造对话消息以及调用chat.completions.create方法。在此基础上通过管理消息历史实现多轮对话设置streamTrue启用流式输出并结合错误处理构建出稳定、可用的AI对话应用。

更多文章