LangChain实战(二):环境搭建与Hello World

本文是《LangChain实战课》系列的第二篇,将手把手带你完成环境配置,并创建你的第一个LangChain应用。

前言

在上一篇文章中,我们了解了LangChain的基本概念和核心价值。今天,我们将正式开始动手实践,从零开始搭建LangChain开发环境,并创建第一个能够与大型语言模型对话的简单应用。

环境准备

1. Python环境要求

LangChain要求Python 3.8或更高版本。如果你还没有安装Python,请按照以下步骤操作:

检查当前Python版本:

bash

python --version
# 或
python3 --version

如果版本低于3.8,请从Python官网下载并安装最新版本。

2. 创建虚拟环境

强烈建议使用虚拟环境来管理Python项目依赖,这样可以避免包冲突问题。

使用venv创建虚拟环境:

bash

# 创建名为langchain-env的虚拟环境
python -m venv langchain-env

# 激活虚拟环境
# Windows
langchain-envScriptsactivate
# macOS/Linux
source langchain-env/bin/activate

激活后,命令行提示符前会出现
(langchain-env)
标识。

3. 安装LangChain和相关依赖

现在我们来安装LangChain核心库以及常用的扩展包:

bash

# 安装LangChain核心库
pip install langchain

# 安装OpenAI包(如果你使用OpenAI的模型)
pip install openai

# 安装常用的数据处理工具
pip install python-dotenv  # 用于管理环境变量
pip install chromadb       # 轻量级向量数据库
pip install tiktoken       # OpenAI的令牌计数工具

# 可选:安装更多文档加载器
pip install pypdf2         # 处理PDF文档
pip install docx2txt       # 处理Word文档
pip install youtube-transcript-api  # 获取YouTube字幕

获取API密钥

要使用大多数商业LLM服务(如OpenAI),你需要获取相应的API密钥。

获取OpenAI API密钥

访问 OpenAI平台

注册或登录你的账号

点击右上角的个人资料,选择”View API Keys”

点击”Create new secret key”生成新的API密钥

复制并妥善保存这个密钥(它只会显示一次)

配置API密钥

为了安全起见,不建议将API密钥直接写在代码中。我们将使用环境变量来管理密钥。

创建.env文件:

bash

# 在项目根目录创建.env文件
touch .env

在.env文件中添加你的API密钥:

ini

OPENAI_API_KEY=你的实际API密钥

编写第一个LangChain程序

现在让我们来创建第一个简单的LangChain应用,实现基本的问答功能。

1. 基础版本:直接调用模型

创建文件
hello_langchain.py

python

import os
from dotenv import load_dotenv
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

# 加载环境变量
load_dotenv()

# 初始化OpenAI模型
llm = OpenAI(
    model_name="gpt-3.5-turbo-instruct",  # 你也可以使用 "text-davinci-003"
    temperature=0.7,  # 控制生成文本的随机性,0-1之间,越高越有创造性
    max_tokens=500,   # 限制生成文本的最大长度
)

# 使用LLM进行简单文本补全
prompt = "请用一句话解释人工智能是什么?"
response = llm(prompt)

print("=== 直接调用LLM ===")
print(f"问题: {prompt}")
print(f"回答: {response}")
print()

# 使用Chat模型(更适合对话场景)
chat_model = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0.7
)

# 创建聊天消息
messages = [HumanMessage(content="请用一句话解释机器学习是什么?")]
chat_response = chat_model(messages)

print("=== 使用Chat模型 ===")
print(f"问题: {messages[0].content}")
print(f"回答: {chat_response.content}")

运行这个程序:

bash

python hello_langchain.py

你应该能看到模型返回的答案,这是你与LangChain的第一次对话!

2. 进阶版本:使用提示模板

LangChain的强大之处在于它的组件化设计。让我们使用提示模板来改进程序:

创建文件
hello_prompt_template.py

python

import os
from dotenv import load_dotenv
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

# 加载环境变量
load_dotenv()

# 初始化模型
llm = OpenAI(temperature=0.7)

# 创建提示模板
template = """
你是一个{role}。请用{style}的风格回答以下问题:

问题:{question}

回答:
"""

prompt_template = PromptTemplate(
    input_variables=["role", "style", "question"],
    template=template
)

# 填充模板并生成回答
filled_prompt = prompt_template.format(
    role="AI专家",
   ,
    question="Transformer模型在自然语言处理中为什么如此重要?"
)

response = llm(filled_prompt)

print("=== 使用提示模板 ===")
print("生成的提示:")
print(filled_prompt)
print("
模型的回答:")
print(response)

3. 完整示例:简单的问答机器人

让我们创建一个更完整的示例,模拟简单的对话交互:

创建文件
simple_chatbot.py

python

import os
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

# 加载环境变量
load_dotenv()

class SimpleChatbot:
    def __init__(self):
        # 初始化聊天模型
        self.chat_model = ChatOpenAI(
            model_name="gpt-3.5-turbo",
            temperature=0.7
        )
        
        # 系统消息,设定AI的角色和行为
        self.system_message = SystemMessage(content="""
        你是一个有帮助的AI助手。你的回答应该:
        1. 简洁明了,切中要点
        2. 友好且专业
        3. 如果遇到不知道的问题,诚实地承认
        """)
    
    def chat(self, user_input):
        # 构建消息列表
        messages = [
            self.system_message,
            HumanMessage(content=user_input)
        ]
        
        # 获取模型回复
        response = self.chat_model(messages)
        return response.content
    
    def run(self):
        print("欢迎使用SimpleChatbot!输入'退出'来结束对话。")
        print("=" * 50)
        
        while True:
            user_input = input("
你: ")
            
            if user_input.lower() in ['退出', 'exit', 'quit']:
                print("AI: 再见!期待下次对话。")
                break
            
            try:
                response = self.chat(user_input)
                print(f"AI: {response}")
            except Exception as e:
                print(f"抱歉,出了点问题: {e}")

# 运行聊天机器人
if __name__ == "__main__":
    load_dotenv()
    bot = SimpleChatbot()
    bot.run()

运行这个聊天机器人:

bash

python simple_chatbot.py

现在你可以与AI进行真正的对话了!

常见问题解答

Q1: 遇到API密钥错误怎么办?

A: 确保你已经:

正确设置了OPENAI_API_KEY环境变量

在OpenAI平台账户中有足够的余额

API密钥没有拼写错误

Q2: 安装包时遇到权限错误怎么办?

A: 使用虚拟环境或在命令前加上
sudo
(仅限Linux/macOS),但更推荐使用虚拟环境。

Q3: 程序运行速度很慢怎么办?

A: 这通常是由于网络延迟或模型加载时间造成的。对于生产环境,可以考虑:

使用更轻量的模型

实现缓存机制

使用异步调用

Q4: 如何减少API调用成本?

A:

设置合理的
max_tokens
参数

对相似请求使用缓存

在开发阶段使用模拟响应

总结

恭喜!你已经成功完成了:

✅ 搭建了LangChain开发环境

✅ 获取并配置了API密钥

✅ 创建了第一个直接调用LLM的程序

✅ 使用了提示模板来规范化输入

✅ 构建了简单的交互式聊天机器人

这只是一个开始,但已经涵盖了LangChain最基础也最重要的概念。在接下来的文章中,我们将深入探讨Model I/O模块的更多功能,包括更复杂的提示工程和输出解析技术。

下一步学习建议

尝试修改提示模板,观察不同参数对输出的影响

体验不同的模型(如切换gpt-3.5-turbo和gpt-4)

调整temperature参数,观察生成文本的多样性变化


欢迎在评论区分享你的体验! 你在环境搭建过程中遇到了什么问题?你的第一个LangChain程序运行成功了吗?如果有任何疑问,欢迎在评论区留言,我们会尽力解答。

下一篇预告:《LangChain实战:深入理解Model I/O – Prompts模板》 – 我们将深入探讨LangChain的提示模板功能,学习如何创建更复杂和高效的提示工程。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容