# langchain_basics
目录
[# langchain_basics](# langchain_basics)
第一部分:LangChain------AI应用的"工具箱"
[1.1 核心设计理念](#1.1 核心设计理念)
[1.2 实战:第一个Agent](#1.2 实战:第一个Agent)
[1.3 核心组件深度解析](#1.3 核心组件深度解析)
引言:当AI需要"动手做事"
让ChatGPT写首诗很容易,信手拈来,但如果让它帮你查查现在的天气、订一张明天的机票,或者给老板发封邮件呢?这时候光靠它那张"嘴"可就不行了,它得有"手"和"脚",这就需要Agent闪亮登场了
简单来说,如果大模型是那个博学多才的大脑,那Agent就是给它装上了四肢和感官,让它不仅能"说",还能"做"
今天我们就来聊聊LangChain,这个让大模型长出三头六臂的魔法工具箱
第一部分:LangChain------AI应用的"工具箱"
1.1 核心设计理念
LangChain的设计理念其实很朴素,就是模块化。就像玩乐高积木一样,它把构建AI应用所需的各种功能都封装成了独立的模块。你想搭个聊天机器人?拿几块积木拼一下。想做一个能上网的助手?再换几块积木拼一下
这种设计让我们可以灵活地组合各种能力,而不必从头造轮子
来看看LangChain的核心组件全景图:
1.2 实战:第一个Agent
光说不练假把式,我们直接上代码。这是一个最简单的ReAct Agent,它能使用工具来回答问题
python
# 一个简单的ReAct Agent示例
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
# 定义工具:这是Agent的"手"
def search_weather(city):
"""查询城市天气"""
# 实际场景这里会调用天气API,这里为了演示直接返回模拟数据
return f"{city}今天晴天,气温20-25℃"
# 将函数封装成Tool对象
tools = [
Tool(
name="WeatherSearch",
func=search_weather,
description="用于查询天气情况"
)
]
# 创建Agent
# zero-shot-react-description 表示Agent会根据工具描述来决定是否使用工具
# 这里的OpenAI()需要配置环境变量OPENAI_API_KEY
agent = initialize_agent(tools, OpenAI(), agent="zero-shot-react-description")
# 让Agent干活
agent.run("北京今天适合出门吗?")
代码解析 :
这段代码的核心在于tools列表。
我们把一个普通的Python函数search_weather包装成了Tool。当Agent收到"北京今天适合出门吗?"这个问题时,它会分析语义,发现需要查询天气,于是就会自动调用WeatherSearch工具,拿到结果后再结合自己的语言能力,告诉你"今天天气不错,适合出门"
1.3 核心组件深度解析
LangChain里的组件眼花缭乱,到底该怎么选?我总结了一个表格,帮你快速理清思路:
|------------|------|----------------------------------------------------------------|
| 组件 | 作用 | 选型建议 |
| LLM | 决策大脑 | 复杂任务(如逻辑推理)建议用GPT-4或Claude-3,简单任务(如分类、摘要)用GPT-3.5或国产大模型即可,省钱又快 |
| Tools | 执行手脚 | description一定要写清楚,这直接决定了模型会不会用这个工具。另外必须做好错误处理,防止工具报错导致整个程序崩溃 |
| Memory | 记忆存储 | Demo阶段可以用内存存储,但在生产环境务必用Redis或数据库,否则服务重启记忆就没了 |
| Agent | 执行器 | 简单的对话场景用Conversational Agent,需要复杂规划的任务考虑Plan-and-execute类型 |
第一篇就先聊到这,下一篇我们进阶一下,看看当Agent需要"思考"的时候,LangChain可能会显得有点力不从心,这时候就该LangGraph出场了