Phi-3 Forest Laboratory 入门必看:Python调用API的完整代码示例

Phi-3 Forest Laboratory 入门必看:Python调用API的完整代码示例 Phi-3 Forest Laboratory 入门必看Python调用API的完整代码示例如果你刚接触Phi-3 Forest Laboratory想用Python快速调用它的API来生成文本但看着一堆技术文档有点发懵那这篇文章就是为你准备的。咱们不聊复杂的原理直接上手写代码。我会带你从零开始一步步搭建环境、写请求、处理结果最后还能实现一个简单的对话机器人。整个过程就像搭积木你跟着做就行。1. 准备工作搭建你的Python环境在开始写代码调用API之前我们需要先把“工具箱”准备好。这个工具箱就是Python的运行环境和几个必要的库。1.1 确保Python已经就位首先你得确认电脑上已经安装了Python。打开你的命令行工具Windows上是CMD或PowerShellMac或Linux上是终端输入下面的命令并回车python --version或者python3 --version如果屏幕上显示了类似Python 3.8.10这样的版本号那就恭喜你第一步已经完成了。如果提示“找不到命令”那你需要先去Python官网下载并安装一个建议选择3.8或以上的版本安装过程一直点“下一步”就行。1.2 安装必备的Python库我们的代码需要两个“帮手”库requests和json。requests库是用来和网络API“打电话”的json库则是用来处理“打电话”时收发的数据格式。通常json库是Python自带的所以我们主要安装requests。在刚才的命令行里输入以下命令pip install requests如果速度慢可以试试国内的镜像源比如pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple看到“Successfully installed”的字样就说明安装成功了。2. 第一次握手发送你的第一个API请求现在假设你已经通过某种方式部署好了Phi-3 Forest Laboratory并且拿到了它的API访问地址比如http://your-server-address/v1/completions和密钥。让我们从一个最简单的请求开始。2.1 理解API的基本通话方式调用大模型的API就像给一个非常聪明的助手发一条短信然后等待它的回复。这条短信需要按照固定的格式JSON来写里面要说明你想让助手干什么提示词以及一些具体要求比如回复多长。2.2 编写文本补全代码“文本补全”是基础功能就是你给出一段开头让模型接着往下写。下面是一个最简化的例子你只需要替换掉YOUR_API_KEY和YOUR_API_URL就可以运行。import requests import json # 你的API信息 API_KEY YOUR_API_KEY # 请替换为你的实际API密钥 API_URL http://your-server-address/v1/completions # 请替换为你的API地址 # 准备请求的“短信内容” headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } # 这是请求的核心数据告诉模型你要做什么 data { model: phi-3, # 指定模型根据你的部署名称调整 prompt: 人工智能在未来十年内最有可能在, # 你给出的开头 max_tokens: 50, # 希望模型最多生成多少个词 temperature: 0.7 # 控制创造性的参数0.0最保守1.0最有创意 } # 发送请求 try: response requests.post(API_URL, headersheaders, jsondata) # 检查请求是否成功HTTP状态码200代表成功 response.raise_for_status() # 解析返回的JSON数据 result response.json() # 提取生成的文本 generated_text result[choices][0][text] print(模型生成的文本) print(generated_text) except requests.exceptions.RequestException as e: # 处理网络请求错误 print(f请求出错: {e}) except KeyError as e: # 处理返回数据格式不符合预期的情况 print(f解析响应数据时出错键错误: {e}) print(f完整的响应内容: {response.text})运行一下看看将上面的代码保存为一个.py文件比如first_call.py在命令行里运行python first_call.py。如果一切配置正确你应该能看到模型接着你的话茬生成了一段关于人工智能未来的文本。3. 实现对话功能让模型记住上下文单纯的补全还不够我们经常需要和模型进行多轮对话。这就需要用到“聊天”格式的API。与补全不同对话需要我们将整个对话历史以“消息”列表的形式发送过去。3.1 构造对话历史在聊天API中每条消息通常包含一个“角色”role和“内容”content。常见的角色有system: 设定助手的背景或行为指令。user: 代表用户说的话。assistant: 代表模型之前的回复。3.2 编写连续对话代码下面的代码展示如何发起一轮对话并模拟连续对话的流程。import requests import json API_KEY YOUR_API_KEY # 注意聊天功能的API地址可能不同通常是 /v1/chat/completions CHAT_API_URL http://your-server-address/v1/chat/completions headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } # 初始化对话历史。系统消息用于设定助手的行为。 conversation_history [ {role: system, content: 你是一个乐于助人且知识渊博的AI助手。}, {role: user, content: 你好请用简单的语言解释一下什么是机器学习。} ] # 准备请求数据 data { model: phi-3, messages: conversation_history, # 将整个历史传入 max_tokens: 150, temperature: 0.8 } try: response requests.post(CHAT_API_URL, headersheaders, jsondata) response.raise_for_status() result response.json() # 提取助手的最新回复 assistant_reply result[choices][0][message][content] print(助手回复) print(assistant_reply) print(- * 40) # 将助手的回复加入历史以便进行下一轮对话 conversation_history.append({role: assistant, content: assistant_reply}) # 模拟用户继续提问 next_user_input 那么监督学习和无监督学习的主要区别是什么 print(f用户继续问{next_user_input}) conversation_history.append({role: user, content: next_user_input}) # 更新请求数据再次发送 data[messages] conversation_history response2 requests.post(CHAT_API_URL, headersheaders, jsondata) response2.raise_for_status() result2 response2.json() print(助手再次回复) print(result2[choices][0][message][content]) except Exception as e: print(f发生错误: {e})这段代码模拟了两轮对话。关键在于每一轮新的请求都需要把之前所有的对话记录包括用户的话和模型的回复都放在messages列表里一起发送模型才能理解上下文做出连贯的回答。4. 让代码更健壮错误处理与重试机制网络请求总有可能出问题比如服务器暂时繁忙、网络波动等。一个好的程序应该能妥善处理这些异常而不是直接崩溃。4.1 常见的错误类型网络连接错误服务器地址错了、网络断了。认证错误API密钥无效或过期。请求格式错误我们发送的JSON数据不符合API要求。服务器内部错误模型服务本身出了问题。速率限制错误短时间内请求太频繁。4.2 添加超时和自动重试requests库自带超时参数我们可以利用它并配合一个简单的循环来实现重试。import requests import time def call_ai_api_with_retry(api_url, headers, data, max_retries3, timeout30): 一个带重试机制的API调用函数 :param api_url: API地址 :param headers: 请求头 :param data: 请求数据 :param max_retries: 最大重试次数 :param timeout: 单次请求超时时间秒 :return: 成功则返回响应对象失败则返回None for attempt in range(max_retries): try: print(f尝试第 {attempt 1} 次请求...) response requests.post(api_url, headersheaders, jsondata, timeouttimeout) # 如果状态码是429请求过多也触发重试 if response.status_code 429: wait_time 2 ** attempt # 指数退避等待1秒2秒4秒... print(f请求过于频繁等待 {wait_time} 秒后重试。) time.sleep(wait_time) continue # 其他非200状态码直接抛出异常 response.raise_for_status() print(请求成功) return response except requests.exceptions.Timeout: print(f请求超时第{attempt 1}次。) except requests.exceptions.ConnectionError: print(f网络连接错误第{attempt 1}次。) except requests.exceptions.HTTPError as e: # 如果是客户端错误4xx通常重试没用直接退出 if 400 response.status_code 500: print(f客户端请求错误状态码 {response.status_code}停止重试。错误信息{e}) break else: print(f服务器错误状态码 {response.status_code}准备重试。) except requests.exceptions.RequestException as e: print(f请求发生未知错误: {e}) # 如果不是最后一次尝试则等待一下再重试 if attempt max_retries - 1: wait_time 1 * (attempt 1) # 线性等待1秒2秒3秒... print(f等待 {wait_time} 秒后重试...) time.sleep(wait_time) print(f经过 {max_retries} 次尝试后仍然失败。) return None # 使用这个函数来调用API API_KEY YOUR_API_KEY API_URL http://your-server-address/v1/completions headers {Authorization: fBearer {API_KEY}, Content-Type: application/json} data {model: phi-3, prompt: 你好请介绍一下你自己。, max_tokens: 100} response call_ai_api_with_retry(API_URL, headers, data) if response: result response.json() print(result[choices][0][text]) else: print(API调用最终失败请检查网络和配置。)这个call_ai_api_with_retry函数封装了重试逻辑。它会对超时、网络错误和服务器错误进行重试但对于客户端错误如错误的API密钥则直接停止。指数退避和线性等待是两种常见的重试等待策略可以有效避免加重服务器负担。5. 整合与进阶打造一个简易的对话终端最后我们把前面学到的所有东西组合起来写一个可以在命令行里持续对话的小程序。import requests import json class SimplePhi3Chatbot: def __init__(self, api_key, base_url): self.api_key api_key # 假设基础URL是聊天接口 self.chat_url f{base_url.rstrip(/)}/v1/chat/completions self.headers { Authorization: fBearer {self.api_key}, Content-Type: application/json } # 初始化对话历史可以在这里给助手一个固定的人设 self.conversation_history [ {role: system, content: 你是一个友好的AI助手回答简洁明了。} ] def send_message(self, user_input, max_tokens200, temperature0.7): 发送用户输入并获取助手回复 # 将用户输入加入历史 self.conversation_history.append({role: user, content: user_input}) data { model: phi-3, messages: self.conversation_history, max_tokens: max_tokens, temperature: temperature } try: response requests.post(self.chat_url, headersself.headers, jsondata, timeout60) response.raise_for_status() result response.json() assistant_reply result[choices][0][message][content] # 将助手回复加入历史 self.conversation_history.append({role: assistant, content: assistant_reply}) return assistant_reply except requests.exceptions.Timeout: return 抱歉请求超时了请稍后再试。 except requests.exceptions.RequestException as e: return f请求出错: {e} except (KeyError, json.JSONDecodeError) as e: return f解析响应时出错: {e} def start_chat(self): 启动一个简单的命令行聊天循环 print(简易Phi-3聊天机器人已启动。输入 退出 或 quit 来结束对话。) print(- * 50) while True: try: user_input input(\n你: ) if user_input.lower() in [退出, quit, exit]: print(再见) break if not user_input.strip(): continue print(助手: , end, flushTrue) reply self.send_message(user_input) print(reply) except KeyboardInterrupt: print(\n\n对话被用户中断。) break except Exception as e: print(f\n程序发生未知错误: {e}) break # 使用示例 if __name__ __main__: # 请在此处填入你的真实信息 YOUR_API_KEY YOUR_API_KEY_HERE YOUR_BASE_URL http://your-server-address # 你的服务器基础地址 bot SimplePhi3Chatbot(YOUR_API_KEY, YOUR_BASE_URL) bot.start_chat()这个类把对话历史管理、API调用和错误处理都封装在了一起。运行这个脚本你就能在命令行里和Phi-3模型进行连续对话了。它虽然简单但包含了构建一个AI对话应用的核心骨架。6. 总结走完这一趟你应该已经掌握了用Python调用Phi-3 Forest Laboratory API的基本方法。从最基础的安装库、发送第一个请求到处理更复杂的多轮对话再到为程序添加健壮的错误处理机制每一步我们都用实际的代码走了过来。关键点在于理解API请求的格式尤其是对话模式下的messages列表以及学会用try...except来应对网络世界的不确定性。你可以把最后那个聊天机器人的代码当作一个起点在此基础上添加更多功能比如保存对话记录、调整模型参数temperature、top_p等、或者整合到你的网站或应用里去。多动手改一改跑一跑遇到问题就回头看看对应的章节很快你就能得心应手了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。