1. 简介
1.1 什么是LangChain?
LangChain是一个基于大语言模型(LLM)的AI开发框架,由哈佛大学的Harrison Chase于2022年10月创建。它的主要功能是帮助开发人员更轻松地构建以自然语言处理为核心的应用程序。
你可以把LangChain想象成一种工具,把大语言模型与其他组件连接起来,就像把积木块拼成一个完整的工程应用。LangChain让你可以轻松使用大语言模型,构建出复杂的AI应用。
1.2 什么是AI工程?
AI工程就是通过一系列工具和技术,把人工智能应用到实际问题中。比如,你想开发一个智能客服系统,AI工程就是帮助你从无到有地构建这个系统的过程。
工程包括四个核心部分:目标、人员、技术、实体材料。目标决定了你要解决什么问题;人员指的是开发人员;技术是大语言模型和相关工具;实体材料是你用来训练和测试AI的文档、数据等。
1.3 LangChain如何帮助AI工程?
LangChain是一个帮助你实现AI工程的框架,它可以:
- 帮助你解决AI工程中的问题:比如构建聊天机器人或内容生成工具。
- 提高开发效率:LangChain提供了一套简化的编程接口,帮助开发人员快速上手。
- 增强扩展能力:通过提供模块化的组件,LangChain让你可以轻松扩展和自定义AI应用。
2. 准备工作
在开始使用LangChain前,你需要准备以下环境:
- Python:建议使用3.8版本以上。
- OpenAI API Key:用于调用OpenAI的服务。
- 安装LangChain:通过
pip install langchain langchain-openai命令来安装。
3. 开始使用LangChain
3.1 使用OpenAI API
首先,你需要学会如何使用OpenAI提供的API服务,比如文本生成服务。以下是一个简单的例子,展示如何使用Chat Completion API:
import os
import requests
# 设置API密钥
api_key = os.getenv('OPENAI_API_KEY')
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
# 准备数据
data = {
'model': 'gpt-4',
'messages': [{'role': 'user', 'content': '什么是图计算?'}],
'temperature': 0.7
}
# 调用API
url = 'https://api.openai.com/v1/chat/completions'
response = requests.post(url, json=data, headers=headers)
answer = response.json()['choices'][0]['message']['content']
print(answer)
3.2 构建简单对话系统
通过使用Chat Completion API,你可以很容易地构建一个简单的对话系统。以下是一个多轮对话的例子:
messages = []
def chat_with_ai(message):
messages.append({'role': 'user', 'content': message})
print(f'me: {message}')
data = {
'model': 'gpt-4',
'messages': messages,
'temperature': 0.7
}
url = 'https://api.openai.com/v1/chat/completions'
response = requests.post(url, json=data, headers=headers)
answer = response.json()['choices'][0]['message']['content']
messages.append({'role': 'assistant', 'content': answer})
print(f"ai: {answer}")
chat_with_ai('什么是图计算?')
chat_with_ai('刚才我问了什么问题?')
3.3 使用LangChain SDK简化开发
直接使用API调用虽然灵活,但对于开发复杂的AI应用可能有些麻烦。这时候你可以使用LangChain提供的SDK,大大简化代码开发。
from langchain_openai import ChatOpenAI
# 使用LangChain的封装调用API
llm = ChatOpenAI(model_name='gpt-4')
response = llm.invoke('什么是图计算?')
print(response)
3.4 数据处理与链式调用
LangChain提供了Prompt和OutputParser来帮助你处理输入输出数据。你可以将这些组件组合起来,像流水线一样处理数据。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# 创建组件
llm = ChatOpenAI(model_name='gpt-4')
prompt = ChatPromptTemplate.from_template("{question}")
output_parser = StrOutputParser()
# 链式调用
message = prompt.invoke({'question': '什么是图计算?'})
response = llm.invoke(message)
answer = output_parser.invoke(response)
print(answer)
3.5 构建更复杂的AI流程
LangChain允许你通过组合不同的组件来构建复杂的AI流程。比如,你可以创建一个包含多步骤计算的流程。
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
# 创建组件
llm = ChatOpenAI(model_name='gpt-4')
prompt = ChatPromptTemplate.from_template("{question}")
output_parser = StrOutputParser()
# 链式调用
chain = {"question": RunnablePassthrough()} | prompt | llm | output_parser
answer = chain.invoke('什么是图计算?')
print(answer)
3.6 添加记忆功能
LangChain还支持记忆功能,可以让AI记住之前的对话内容,从而在多轮对话中表现得更智能。
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder, HumanMessagePromptTemplate
from langchain_openai import ChatOpenAI
# 创建组件
llm = ChatOpenAI(model_name='gpt-4')
prompt = ChatPromptTemplate.from_messages([MessagesPlaceholder(variable_name='chat_history'), HumanMessagePromptTemplate.from_template('{question}')])
memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True)
# 创建带记忆功能的Chain
llm_chain = LLMChain(llm=llm, memory=memory, prompt=prompt)
# 调用
print(llm_chain.predict(question='什么是图计算?'))
print(llm_chain.predict(question='刚才我问了什么问题?'))
总结
通过以上步骤,你应该已经对LangChain有了初步的了解。它提供了丰富的工具,让你可以快速构建复杂的AI应用。如果你对AI工程感兴趣,LangChain是一个非常好的入门工具。
希望这篇简化后的文章能够帮助你更好地理解和使用LangChain!