1. 大语言模型API调用基础
大语言模型(LLM)的API调用是开发者与AI交互的核心方式。主流平台如OpenAI、Anthropic等都提供了完善的API接口,让我们能够将强大的自然语言处理能力集成到自己的应用中。
1.1 API调用准备工作
在开始调用API前,我们需要完成几个关键步骤:
-
获取API密钥:每个平台都会提供唯一的API key,这是身份验证的关键。以OpenAI为例,登录后可以在"API Keys"页面创建新密钥。
-
了解计费方式:大多数API按token数量计费,不同模型价格差异很大。例如GPT-4比GPT-3.5贵15-30倍。
-
安装SDK:官方通常提供多种语言的SDK。Python环境下常用的是:
bash复制pip install openai
1.2 基础调用示例
下面是一个完整的Python调用示例:
python复制import openai
openai.api_key = "你的API_KEY"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "请用简单语言解释量子计算"}
]
)
print(response.choices[0].message.content)
关键参数说明:
model: 指定使用的模型版本messages: 对话历史列表temperature: 控制输出的随机性(0-2)max_tokens: 限制响应长度
2. 提示工程核心技术
2.1 提示设计原则
有效的提示(Prompt)设计是获得优质输出的关键。以下是核心原则:
-
角色设定:明确指定AI的角色
示例:"你是一位资深软件工程师,擅长用通俗语言解释技术概念"
-
任务分解:将复杂问题拆解为步骤
不好的提示:"写一篇关于机器学习的文章"
好的提示:"1. 先定义机器学习 2. 对比监督/无监督学习 3. 给出2个实际应用案例" -
示例引导:提供输入输出示例(Few-shot learning)
text复制
输入:将"我爱编程"翻译成英语 输出:I love programming 输入:将"人工智能很神奇"翻译成英语 输出:
2.2 高级提示技巧
-
思维链(Chain-of-Thought):
text复制
问题:小明有5个苹果,吃了2个,妈妈又买了8个,现在有多少? 思考过程: 1. 初始数量:5个 2. 吃掉后:5 - 2 = 3个 3. 新增后:3 + 8 = 11个 答案:11个 -
自洽性验证:
text复制
请先列出解题步骤,然后验证每一步的正确性,最后给出最终答案。 问题:... -
格式控制:
text复制
请用JSON格式回答,包含title、summary和keywords字段: { "title": "", "summary": "", "keywords": [] }
3. 实战应用场景
3.1 内容生成系统
构建自动内容生成流水线:
python复制def generate_blog_post(topic):
prompt = f"""作为专业博主,撰写一篇关于{topic}的技术文章。
要求:
1. 开头段落吸引读者兴趣
2. 包含3个核心知识点
3. 每个知识点配实际案例
4. 总结部分提出思考问题"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=1500
)
return response.choices[0].message.content
3.2 智能问答系统
结合RAG(检索增强生成)技术:
python复制def answer_with_context(question, context):
prompt = f"""基于以下上下文回答问题:
{context}
问题:{question}
要求:
1. 先判断问题是否与上下文相关
2. 相关则直接回答
3. 不相关则回复"该问题不在提供的知识范围内\""""
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
return response.choices[0].message.content
4. 性能优化与成本控制
4.1 缓存策略
实现响应缓存大幅降低API调用成本:
python复制from functools import lru_cache
import hashlib
@lru_cache(maxsize=1000)
def cached_completion(prompt):
prompt_hash = hashlib.md5(prompt.encode()).hexdigest()
# 检查本地缓存
if exists_in_cache(prompt_hash):
return get_from_cache(prompt_hash)
# 调用API并缓存结果
response = openai.ChatCompletion.create(...)
save_to_cache(prompt_hash, response)
return response
4.2 流式处理
处理长内容时使用流式响应提升用户体验:
python复制response = openai.ChatCompletion.create(
model="gpt-4",
messages=[...],
stream=True
)
for chunk in response:
content = chunk.choices[0].delta.get("content", "")
print(content, end="", flush=True)
5. 常见问题排查
5.1 错误处理指南
| 错误代码 | 原因 | 解决方案 |
|---|---|---|
| 429 | 请求过多 | 实现指数退避重试机制 |
| 400 | 无效请求 | 检查输入格式和参数 |
| 503 | 服务不可用 | 等待后重试或切换备用API端点 |
5.2 质量优化技巧
-
温度参数调整:
- 创造性任务:0.7-1.0
- 事实性回答:0.1-0.3
-
重复惩罚:
python复制response = openai.ChatCompletion.create( ..., frequency_penalty=0.5, # 降低重复短语 presence_penalty=0.3 # 鼓励新话题 ) -
结果后处理:
python复制def postprocess(text): # 移除潜在的API泄露信息 text = text.replace("作为AI助手", "").strip() return text
在实际项目中,我发现结合具体业务场景设计提示模板比通用提示效果提升40%以上。例如电商场景的客服机器人,预先定义好商品查询、退换货政策等常见问题的回答框架,能显著提高响应准确率。
