共计 2126 个字符,预计需要花费 6 分钟才能阅读完成。
背景与痛点
大型语言模型(LLM)正在改变我们与计算机交互的方式。从智能客服到个性化助手,LLM Skill 开发已成为一个热门领域。但对于新手开发者来说,入门路上有几个常见障碍:

- API 调用复杂 :不同服务商的 API 设计差异大,认证流程繁琐
- 上下文管理困难 :多轮对话需要维护历史记录,容易丢失上下文
- 性能不可控 :响应延迟和 token 消耗直接影响用户体验和成本
技术选型:主流 LLM 服务对比
目前市场上有多个提供 LLM API 的服务商,各有特点:
- OpenAI GPT 系列
- 优点:模型成熟,文档完善,社区支持好
-
适合:通用对话场景,快速验证想法
-
Anthropic Claude
- 优点:更长的上下文窗口(可达 100K tokens)
-
适合:需要处理长文档的场景
-
Google Gemini
- 优点:与谷歌生态集成好
- 适合:需要结合搜索等谷歌服务的应用
对于初学者,建议从 OpenAI 开始,因为它的文档和示例最丰富。
核心实现
1. 基础 API 调用
首先安装必要的库:
pip install openai python-dotenv
创建一个 .env 文件存储 API 密钥:
OPENAI_API_KEY= 你的 API 密钥
然后是最简单的对话实现:
import openai
from dotenv import load_dotenv
import os
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def simple_chat(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
print(simple_chat("你好,你是谁?"))
2. 多轮对话上下文
维护对话历史是关键。以下是改进版:
class ChatSession:
def __init__(self):
self.history = []
def add_message(self, role, content):
self.history.append({"role": role, "content": content})
def get_response(self):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=self.history
)
assistant_msg = response.choices[0].message
self.add_message(assistant_msg.role, assistant_msg.content)
return assistant_msg.content
# 使用示例
chat = ChatSession()
chat.add_message("user", "推荐一本 Python 入门书")
print(chat.get_response()) # 模型回复
chat.add_message("user", "这本书适合完全零基础的人吗?")
print(chat.get_response()) # 模型能理解上下文
3. 对话状态管理
对于更复杂的应用,可以引入简单的状态跟踪:
class DialogManager:
def __init__(self):
self.state = "init" # 可以是 'init', 'waiting_reply', 'completed' 等
self.context = {}
def process_input(self, user_input):
if self.state == "init":
self.context["topic"] = "unknown"
return "请问你想了解什么主题?"
# 其他状态处理逻辑...
性能考量
- 延迟优化
- 使用
stream=True参数实现流式响应 -
考虑本地缓存常见问题的回答
-
Token 节省
- 定期清理历史消息(可保留最近 3 - 5 轮)
- 对长回复设置
max_tokens限制
避坑指南
- 错误:忘记维护对话历史
- 现象:每次提问模型都像失忆一样
-
解决:确保将用户输入和模型回复都加入历史
-
错误:API 密钥硬编码
- 现象:代码提交到 GitHub 后密钥泄露
-
解决:始终使用环境变量存储密钥
-
错误:未处理超时
- 现象:网络不稳定时应用卡死
- 解决:添加超时参数和重试逻辑
进阶建议
完成基础版本后,可以尝试:
- 添加意图识别(用少量示例实现简单分类)
- 集成知识库(结合向量数据库实现精准问答)
- 支持多模态(如图片理解)
# 简易意图识别示例
def detect_intent(text):
prompt = f"判断用户意图,输出分类结果。选项:问候 / 提问 / 其他。文本:{text}"
response = simple_chat(prompt)
return response
总结
通过本文,你应该已经掌握了 LLM Skill 开发的基础流程。从简单的 API 调用开始,逐步添加上下文管理和状态跟踪,最终可以构建出实用的对话应用。记住,最好的学习方式是动手实践 – 尝试修改示例代码,观察模型行为的变化,这是掌握 LLM 开发最快的方法。
正文完
