Langchain 是一个旨在简化构建端到端语言模型应用的框架。它提供了丰富的构建块,如模型、提示、数据检索、记忆、链和代理,使开发者能够高效地利用大型语言模型(LLMs)实现各种复杂的任务。
安装与配置要开始使用 Langchain,首先确保安装了最新版本的框架及其相关组件。以下步骤指导你完成安装过程:
安装:
pip install langchain
对于特定功能的集成,如与 OpenAI 的集成,可以安装额外的库:
pip install langchain_openai
配置环境变量:
为了与 OpenAI 等模型服务集成,需要设置 API 密钥:
import os
os.environ["OPENAI_API_KEY"] = "your_api_key_here"
基础使用
模型初始化
Langchain 支持多种 LLMs,使用预先选择的模型库可以轻松执行调用。以下示例展示了如何初始化一个基于 OpenAI 的 LLM:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
response = llm("Hello, world!")
print(response)
使用提示模板
提示模板是关键组件,它们为 LLM 提供了指令,以确保输出符合特定的上下文或格式。以下是一个使用提示模板的例子:
from langchain.prompts.chat import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "您是一个AI助手,提供关于编程的帮助。"),
("user", "{topic} 有什么好的资源可以学习?"),
])
response = prompt.format_messages(topic="Python 编程")
print(response)
输出解析器应用
输出解析器用于简化 LLM 输出的处理,例如将其转换为结构化数据。以下是一个简单的输出解析器示例:
from langchain.schema import BaseOutputParser
from langchain.prompts import StringPromptTemplate
class SimpleParser(BaseOutputParser):
def parse(self, text):
return text.split(", ")
prompt = StringPromptTemplate.from_template("列出一些编程语言:{languages}")
parser = SimpleParser()
result = parser.parse(prompt.format(languages="Python, Java, C++"))
print(result)
向量存储与检索
向量存储是 Langchain 中用于管理文档和知识库的重要组件。以下步骤展示了如何加载数据、进行向量化存储,并构建检索链:
数据加载与向量存储
首先安装必要的库,如 beautifulsoup4
用于网页数据加载和 faiss-cpu
用于向量存储:
pip install beautifulsoup4
pip install faiss-cpu
加载网页数据:
import os
import requests
def load_web_content(url):
response = requests.get(url)
return response.text
url = "https://www.example.com"
content = load_web_content(url)
将数据向量化存储:
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_text(content)
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_texts(documents, embeddings)
构建检索链
使用上文构建的向量存储,创建一个检索链来查找相关文档并结合 LLM 生成响应:
from langchain.chains.combine_documents import create_combined_docs_chain
prompt = ChatPromptTemplate.from_messages([
("system", "基于给定的上下文回答问题。"),
("user", "{context}"),
])
chain = create_combined_docs_chain(llm, prompt)
query = "请列举一些编程语言。"
response = chain({"input_documents": vectorstore.get_relevant_documents(query), "question": query})
print(response["result"])
代理与对话管理
代理(Agents)是 Langchain 的核心机制之一,它们允许 LLM 自主调用外部工具和服务。以下是如何创建一个代理并使用它的示例:
from langchain.agents import create_openai_functions_agent
# 描述代理的任务和工具
tools = [
# 工具实例...
]
# 从 Hub 拉取代理的提示模板
prompt = hub.pull("hwchase17/openai-functions-agent")
# 初始化 LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 创建代理
agent = create_openai_functions_agent(llm, tools, prompt)
# 使用代理执行任务
query = "告诉我关于 Langchain 的信息。"
response = agent({"input": query})
print(response)
LangServe 与部署
LangServe 是用于将任何 Langchain 链部署为 REST API 的工具。以下是如何创建并运行一个服务的流程:
from langchain.agents import AgentExecutor
# 假设已初始化并准备了你的链(chain)
# 创建一个 FastAPI 应用
from fastapi import FastAPI
app = FastAPI()
# 使用 LangServe 添加你的链到 FastAPI 应用中
from langserve import add_routes
add_routes(app, chain)
# 运行服务
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
深入学习资源
- 源代码仓库:访问 https://github.com/langchain-ai/langchain 获取最新信息与社区贡献机会。
- 官方文档:访问 https://python.langchain.com/ 获取更多详细信息、教程和示例。
- 社区与支持:加入 Langchain 社区,通过论坛、GitHub 仓库、钉钉群等渠道获取支持与分享经验。
通过上述指南,你已经掌握了从安装配置到实际应用的 Langchain 基本流程。随着经验的积累,你可以进一步探索 Langchain 的其他高级特性,如更复杂的代理逻辑、数据检索优化、服务个性化等,以构建更复杂、更智能的应用。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章