Phi-3-Mini-128K入门必看:Python调用API与基础Prompt工程指南
Phi-3-Mini-128K入门必看:Python调用API与基础Prompt工程指南
如果你刚开始接触AI模型,看到“API调用”、“Prompt工程”这些词可能有点发怵,觉得这是高手才玩的东西。别担心,今天这篇文章就是为你准备的。咱们不聊那些复杂的概念,就手把手带你,用最基础的Python知识,把Phi-3-Mini-128K这个模型用起来,并且让它听你的话,生成你想要的内容。
Phi-3-Mini-128K是个挺厉害的文本生成模型,理解能力强,上下文也长。但模型再厉害,也得靠我们“下指令”才能干活。这个“下指令”的过程,就是Prompt工程。听起来玄乎,其实核心就一句话:你怎么问,它就怎么答。问得好,答案就精准;问得模糊,答案就可能跑偏。
这篇文章的目标很简单:让你在半小时内,掌握用Python调用这个模型API的基本方法,并学会几种最实用、立马就能上手的Prompt编写技巧。咱们从零开始,一步步来。
1. 环境准备:万事开头第一步
在开始写代码调用模型之前,我们需要先把“舞台”搭好。这个过程很简单,就像你要做饭,得先把锅和食材准备好。
1.1 安装Python
如果你电脑上还没有Python,这是第一步。建议安装Python 3.8或以上的版本,稳定性更好。你可以去Python官网下载安装包,安装时记得勾选“Add Python to PATH”这个选项,这样后面在命令行里使用Python会更方便。
安装完成后,打开你的命令行工具(Windows上是CMD或PowerShell,Mac或Linux上是终端),输入下面的命令检查是否安装成功:
python --version或者
python3 --version如果显示了类似Python 3.10.0的版本信息,那就说明安装成功了。
1.2 安装必要的Python库
我们需要两个核心的库来帮助我们和模型的API进行通信。
requests:这是一个非常流行的HTTP库,用来向网络上的API接口发送请求和接收响应。几乎所有的API调用都离不开它。openai:这是OpenAI官方提供的Python SDK(软件开发工具包)。虽然Phi-3-Mini-128K不是OpenAI的模型,但很多兼容OpenAI API格式的模型服务(包括一些部署了Phi-3的云服务或本地服务)都可以使用这个库来调用,因为它定义了一套标准的请求格式,用起来非常方便。
安装它们只需要一行命令。打开命令行,输入:
pip install requests openai如果速度慢,可以尝试使用国内的镜像源,比如清华的源:
pip install requests openai -i https://pypi.tuna.tsinghua.edu.cn/simple看到“Successfully installed”的字样,就说明库都装好了。
1.3 获取API密钥与端点
这是最关键的一步。调用API就像打电话,你需要知道电话号码(API端点地址)和密码(API密钥)。
- API密钥:一串独特的字符,用来证明你有权限使用这个服务。通常你需要在提供该模型API服务的平台上注册账号并创建。
- API端点:就是模型服务所在的网络地址。
请注意:Phi-3-Mini-128K是微软开源的模型,你需要将它部署在某个地方(比如你自己的服务器,或者使用某个云平台提供的托管服务),才能获得一个可以调用的API端点。本文假设你已经有了一个可用的端点(例如https://your-api-server.com/v1)和对应的API密钥(例如sk-xxxxxxxxxxxx)。
为了安全,我们不要在代码里直接写死这些敏感信息。一个好的习惯是使用环境变量。在命令行中临时设置(重启后失效):
# 在Mac/Linux上 export API_KEY="sk-你的密钥" export API_BASE="https://你的API端点地址" # 在Windows PowerShell上 $env:API_KEY="sk-你的密钥" $env:API_BASE="https://你的API端点地址"这样,我们的代码就可以安全地读取这些信息了。
2. 第一次握手:用Python调用API
环境搭好了,钥匙也拿到了,现在我们来敲开模型的大门。这里我会介绍两种方式,你可以根据你的模型服务类型选择。
2.1 方法一:使用通用的requests库
如果你的API服务是完全自定义的,或者你想更清楚地理解底层发生了什么,用requests库是最直接的方式。
import requests import os # 从环境变量读取API密钥和地址 API_KEY = os.getenv("API_KEY") API_BASE = os.getenv("API_BASE") # 定义请求的URL,这里假设端点后面接的是 `/chat/completions` 路径 url = f"{API_BASE}/chat/completions" # 设置请求头,告诉服务器你的身份和发送的数据格式 headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 构建请求体,也就是你给模型的“指令” data = { "model": "phi-3-mini-128k-instruct", # 指定模型名称,根据你的服务调整 "messages": [ {"role": "user", "content": "你好,请介绍一下你自己。"} ], "max_tokens": 150, # 控制模型回答的最大长度 "temperature": 0.7 # 控制回答的随机性,0.0最确定,1.0最随机 } # 发送POST请求 response = requests.post(url, headers=headers, json=data) # 检查请求是否成功 if response.status_code == 200: result = response.json() # 提取模型返回的回复内容 reply = result["choices"][0]["message"]["content"] print("模型回复:", reply) else: print(f"请求失败,状态码:{response.status_code}") print(response.text)把上面的代码保存为一个.py文件(比如first_call.py),在命令行里运行它:
python first_call.py如果一切顺利,你应该能看到模型的一段自我介绍。恭喜你,你已经成功完成了第一次API调用!
2.2 方法二:使用OpenAI格式的SDK
如果你的模型服务兼容OpenAI的API格式(很多服务都兼容,因为这样用户使用起来更方便),那么使用openai库会让代码更简洁。
from openai import OpenAI import os # 初始化客户端,指向你的API端点 client = OpenAI( api_key=os.getenv("API_KEY"), base_url=os.getenv("API_BASE") # 关键:这里替换成你的服务地址 ) # 发起对话请求 response = client.chat.completions.create( model="phi-3-mini-128k-instruct", # 指定模型 messages=[ {"role": "user", "content": "你好,请介绍一下你自己。"} ], max_tokens=150, temperature=0.7 ) # 打印回复 print("模型回复:", response.choices[0].message.content)这段代码的功能和上一段完全一样,但看起来是不是更清爽?openai库帮你封装了HTTP请求的细节,你只需要关心你要发送什么内容。
无论用哪种方法,核心都是构建一个messages列表。这个列表定义了对话的历史和当前问题。role可以是“system”(系统指令,设定AI的角色)、“user”(用户说的话)、“assistant”(AI之前的回复)。通过组合这些消息,我们就能实现多轮对话。
3. 让AI听懂你的话:基础Prompt工程
模型调通了,但你可能发现,有时候它的回答不尽如人意。问题往往出在“提问方式”上。Prompt工程,就是优化提问方式的艺术。下面这几个技巧,能立刻提升你与模型沟通的效率。
3.1 技巧一:指令清晰化——别让AI猜
模糊的指令得到模糊的回答。你要像给一个聪明但缺乏背景知识的新手下达工作指令一样,越具体越好。
- 模糊的Prompt:“写一篇关于健康的文章。”
- 清晰的Prompt:“以一名营养师的身份,为都市白领写一篇约500字的博客文章,主题是‘工作日午餐的快捷健康选择’。文章需要包含三个具体的食谱建议,风格轻松实用,并鼓励读者留言分享自己的经验。”
看,第二个指令明确了角色(营养师)、受众(都市白领)、长度(500字)、主题范围(工作日午餐)、具体内容要求(三个食谱)、风格(轻松实用)和互动引导(鼓励留言)。模型有了这些“路标”,生成的内容就会精准得多。
在你的代码里,可以这样用:
clear_prompt = """ 你是一名经验丰富的旅行博主。请为第一次去日本东京的游客,规划一个为期3天的经典行程。 要求: 1. 每天上午、下午、晚上的活动安排。 2. 包含必去的景点、地道的餐饮推荐。 3. 给出大致的交通方式和预算建议。 4. 语气热情、富有感染力。 """ messages = [{"role": "user", "content": clear_prompt}] # ... 将messages放入API请求中3.2 技巧二:提供示例——展示“标准答案”
对于格式固定或逻辑复杂的任务,直接告诉模型“我想要这样的”是最快的方法。这就是“少样本学习”(Few-Shot Learning)。
假设你想让模型把一段口语化的用户反馈,整理成结构化的bug报告。
example_prompt = """ 请将下面的用户反馈,整理成结构化的Bug报告。 示例: 用户反馈:“你们这个App一用相机就闪退,重启手机也没用,我手机是iPhone13,系统是最新的。” 结构化报告: - **问题标题**:App在使用相机功能时发生闪退 - **设备信息**:iPhone 13,系统版本:iOS 16.5 - **复现步骤**:1. 打开App 2. 点击相机功能 3. App闪退关闭 - **问题频率**:每次尝试均发生 - **用户期望**:正常使用相机功能 现在请处理新的反馈: 用户反馈:“登录的时候一直提示网络错误,但我其他App上网都正常,安卓手机。” """ messages = [{"role": "user", "content": example_prompt}]通过提供一个清晰的例子,模型就能很好地模仿输出格式和内容要点。
3.3 技巧三:控制风格与长度——给回答“定调”
通过Prompt中的关键词和参数,你可以轻松控制生成文本的风格和长度。
控制风格:在指令中加入风格关键词。
“请用专业、严谨的学术论文风格阐述...”“请模仿李白诗歌的风格,写一首关于月亮的诗。”“请用幽默风趣的口吻,解释什么是区块链。”
控制长度:
- 在Prompt中直接说明:
“请用一段话(约100字)概括...”,“请列出3-5个要点...”。 - 使用API参数
max_tokens:这个参数直接限制模型生成的最大令牌数(可以粗略理解为字数)。对于总结、简短回复,可以设为100-300;对于创作、长文,可以设为1000或更多。
- 在Prompt中直接说明:
# 一个综合控制风格和长度的例子 style_prompt = “请以科技杂志记者的口吻,用大约200字,简要介绍人工智能在医疗影像诊断中的最新应用进展。” messages = [{"role": "user", "content": style_prompt}] # 在API调用中同时使用max_tokens进行硬性长度限制 response = client.chat.completions.create( model="phi-3-mini-128k-instruct", messages=messages, max_tokens=250, # 设置生成内容的最大长度 temperature=0.5 # 温度设为0.5,在准确性和创造性之间取得平衡 )4. 实战模板:几个即拿即用的Prompt场景
了解了基础技巧,我们来组合一下,看看在不同场景下如何应用。你可以把这些模板直接复制到你的代码里试试。
4.1 场景一:邮件助手
需求:将一段杂乱的工作汇报,整理成格式清晰、语言得体的周报邮件。
email_template = """ 你是一名项目经理助理。请将以下杂乱的工作记录,整理成一封发给团队成员的周报汇总邮件。 要求: 1. 邮件主题明确。 2. 正文开头有简要概述。 3. 将工作内容分为“已完成”、“进行中”、“下周计划”三个部分,用项目符号列出。 4. 结尾有鼓励性话语和签名(签名用[你的名字]代替)。 5. 语言正式、简洁、积极。 工作记录: {user_input} """ # 使用时,将 {user_input} 替换为实际的工作记录文本4.2 场景二:代码解释器
需求:看不懂某段代码?让AI帮你解释。
code_explain_template = """ 你是一个耐心的编程导师。请为编程初学者解释下面这段代码: 1. 这段代码整体实现了什么功能? 2. 请逐行解释关键代码的作用。 3. 指出代码中可能需要注意的地方(如果有的话)。 代码: ```python {user_code}请用通俗易懂的语言解释。 """
使用时,将 {user_code} 替换为需要解释的代码
### 4.3 场景三:创意头脑风暴 **需求**:为新项目或新内容寻找创意点子。 ```python brainstorm_template = """ 我们需要为一家主打“健康轻食”的新奶茶店策划营销活动。请你进行头脑风暴。 请提供: 1. 3个有吸引力的店铺开业活动创意。 2. 2个适合在社交媒体上传播的线上互动话题。 3. 1句朗朗上口的宣传口号。 要求创意新颖,贴合“健康”、“时尚”、“年轻”的品牌定位。 """5. 总结与下一步
走完这一趟,你会发现用Python调用AI模型的API并没有想象中那么难。核心步骤其实就是三步:准备好环境和密钥、用代码发送一个结构化的请求、然后处理返回的结果。而Prompt工程,就像是学习如何与这位强大的AI伙伴高效沟通的语言,指令越清晰、例子越具体,它完成的任务就越出色。
实际用起来,你可以先从修改和运行本文的代码示例开始,把里面的API地址和密钥换成你自己的。然后,尝试用不同的Prompt模板去完成你手头真实的任务,比如整理会议纪要、润色一段文字、或者生成一些简单的创意内容。过程中你可能会遇到回答不理想的情况,这很正常,回头看看是不是指令不够清楚,或者换个问法试试。
Phi-3-Mini-128K的能力远不止于此,它还能处理更复杂的多轮对话、长文档分析等任务。当你熟悉了基础调用后,可以尝试探索更高级的用法,比如在messages中构建更长的对话历史,或者利用它的长上下文能力来总结一篇完整的报告。最重要的是动手去试,在实践中学到的东西最扎实。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
