入门学习LangChain框架的记录(一)
本文介绍了LangChain框架v0.3版本的使用指南,主要包括环境配置、模型调用和提示词模板三个核心模块。在环境配置方面,详细说明了安装步骤、API密钥设置和验证方法,强调版本兼容性(Python3.7-3.9)和密钥安全管理的重要性。模型调用部分讲解了不同模型的实例化方法、参数调优和错误处理技巧,特别指出GPT-3.5-turbo等常用模型的调用注意事项。提示词模板章节则重点阐述模板设计、变量
LangChain是一个用于构建大语言模型应用的Python框架,v0.3版本在API设计和功能上相对稳定,但需注意版本兼容性。
整体大纲
-
环境配置
- 安装LangChain及依赖
- 设置API密钥和环境变量
- 验证环境是否正常工作
-
模型调用
- 导入并实例化模型类
- 调用模型进行文本生成
- 处理模型输出
-
提示词模板
- 定义和创建提示模板
- 使用模板生成动态提示
- 模板变量的绑定和格式化
1. 环境配置
技术指南:环境配置是使用LangChain的第一步,涉及安装框架、设置API密钥(如OpenAI的API密钥)和验证环境。
-
步骤1: 安装LangChain
使用pip安装LangChain v0.3版本。建议在虚拟环境中操作,以避免依赖冲突。pip install langchain==0.3.0同时安装常用依赖,如
openai库(用于调用模型):pip install langchain-openai -
步骤2: 设置API密钥(推荐使用.env方式配置密钥)
将API密钥设置为环境变量。例如,对于OpenAI模型,您需要获取OpenAI API密钥,并在.env文件中配置你的实际 url 和 api_keyOPENAI_BASE_URL="openai_base_url" OPENAI_API_KEY="openai_api_key" -
import os import dotenv dotenv.load_dotenv() os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") os.environ["OPENAI_BASE_URL"] = os.getenv("OPENAI_BASE_URL")如果使用其他模型(如Hugging Face),类似设置其密钥:
os.environ["HUGGINGFACEHUB_API_TOKEN"] = os.getenv["HUGGINGFACEHUB_API_TOKEN"] -
步骤3: 验证环境
运行一个简单脚本检查是否安装成功:from langchain_openai import OpenAI # 导入模型类 llm = OpenAI(model_name="gpt-3.5-turbo") # 实例化模型 response = llm("你好,世界!") # 调用模型 print(response) # 应输出生成的文本如果输出正常文本(如"你好,世界!"的扩展),则环境配置成功。
注意事项:
- 版本兼容性:v0.3版本可能与Python 3.10+有兼容性问题,建议使用Python 3.7-3.9。
- 密钥安全:不要将API密钥硬编码在代码中,使用环境变量或密钥管理工具(如
.env文件)。 - 依赖冲突:确保
pip install时指定版本号(langchain==0.3.0),以避免自动升级到新版本导致API不兼容。 - 网络问题:如果在中国大陆,可能需要代理访问OpenAI API。
2. 模型调用
技术指南:模型调用涉及导入LangChain的模型类、实例化模型对象,并进行推理。v0.3版本支持多种模型(如OpenAI、Hugging Face)。
-
步骤1: 导入并实例化模型
根据需求选择模型类。例如,调用OpenAI的GPT模型:from langchain_openai import OpenAI # 实例化模型,指定模型名称和参数 llm = OpenAI( model_name="text-davinci-003", # 模型ID temperature=0.7, # 控制生成随机性,0-1范围 max_tokens=100 # 最大输出token数 ) -
步骤2: 调用模型进行推理
使用实例化的模型对象生成文本。输入可以是字符串或列表:# 单次调用 response = llm("请解释人工智能的概念。") print(response) # 批量调用(提高效率) responses = llm.generate(["问题1", "问题2"]) for res in responses.generations: print(res[0].text) -
步骤3: 处理模型输出
输出是字符串格式,可直接使用。如果需要结构化处理,可结合其他LangChain组件:# 示例:提取关键信息 output = llm("总结以下文本:人工智能是...") if "总结" in output: print("总结成功")
注意事项:
- 模型选择:langchain-openai中,gpt-3.5-turbo是常用模型,但需注意OpenAI API的调用成本(按token计费)。
- 参数调优:
temperature值越高输出越随机,建议从0.5开始测试;max_tokens设置过低可能导致截断。 - 速率限制:API调用有速率限制(如OpenAI的每分钟请求数),使用
max_retries参数处理错误:llm = OpenAI(max_retries=3) # 设置重试次数 - 错误处理:捕获异常,如网络错误或无效输入:
try: response = llm("输入内容") except Exception as e: print(f"错误:{e}")
3. 提示词模板
技术指南:提示模板用于标准化输入,提高可重用性。v0.3版本通过PromptTemplate类实现。
-
步骤1: 定义和创建模板
使用PromptTemplate创建模板,支持变量占位符:from langchain_core import PromptTemplate # 定义模板字符串,变量用花括号包裹 template = "请用一句话解释{concept},并给出一个例子。" prompt = PromptTemplate( input_variables=["concept"], # 指定变量列表 template=template ) -
步骤2: 使用模板生成动态提示
绑定变量值生成最终提示字符串:# 参数中必须要指明:input_variables, template prompt_template = PromptTemplate( input_variable=["role", "name"], template="你是一个{role},你的名字叫{name}" ) # 直接用于模型调用 response = llm(prompt_template) print(response) -
步骤3: 模板变量处理
支持多个变量和默认值:template = "{role}:请描述{concept}。" prompt_template = PromptTemplate( input_variables=["role", "concept"], template=template, partial_variables={"role": "AI助手"} # 设置默认值 ) prompt = prompt_template.format(concept="神经网络") print(prompt) # 输出:"AI助手:请描述神经网络。"
注意事项:
- 模板设计:保持模板简洁,避免过长或模糊指令,以提高模型准确性。例如,使用明确动词如“解释”而非“谈谈”。
- 变量安全:确保输入变量不包含恶意代码(如SQL注入),通过验证输入内容。
- 版本差异:v0.3版本中,
PromptTemplate的API与新版不同,不支持链式操作(如from_template方法),需手动定义input_variables。 - 性能优化:对于高频使用,预生成模板对象以减少运行时开销。
- 错误排查:如果变量未绑定,会抛出
KeyError,使用partial_variables设置默认值或检查输入。
总结注意事项
- 整体框架使用:
- 版本锁定:始终使用
pip install langchain==0.3.0,避免意外升级。 - 文档参考:v0.3版本文档可能已归档,建议查阅历史版本文档(如GitHub release notes)。
- 测试驱动:在开发前,编写单元测试验证配置和调用(使用
pytest)。
- 版本锁定:始终使用
- 安全与合规:
- 遵守API提供商的使用政策(如OpenAI的内容审查)。
- 敏感数据(如用户输入)不应直接暴露在提示中。
- 扩展性:
- v0.3版本支持集成其他工具(如Vector Stores),但需额外安装库。
- 如需升级,先备份代码,因为新版本v1.0有重大变更。
更多推荐



所有评论(0)