【LangChain学习笔记】创建智能体

基础创建:简易智能体

核心代码示例

python 复制代码
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI

# 大模型初始化
model = ChatOpenAI(
    model_name="qwen-plus",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key="sk-94207ea3eb4b44eaae46683ed8ac55e5",
)

# 使用create_agent函数创建智能体,将前面初始化的模型作为参数传入
agent = create_agent(model=model)

# 通过智能体的invoke方法发起调用,传入构造好的输入数据
response = agent.invoke({"messages": [{"role": "human", "content": "1+1=?"}]})

# 打印智能体响应消息列表中最后一条消息的内容
print(response["messages"][-1].content)

废弃函数提醒

  • 最新版本 LangChain 中,无法通过 langchain.agents.initialize_agent 函数创建智能体;
  • langgraph.prebuilt.create_react_agent 函数同样已被废弃,不建议继续使用。

实战实例:智能体创建网页

功能说明

创建绑定文件管理工具的智能体,实现根据用户指定主题,自动编写并生成 HTML 网页文件,同时返回结构化 JSON 格式响应。

完整代码示例

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from langchain_core.prompts import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

# 从langchain_community.agent_toolkits模块导入FileManagementToolkit类,用于获取文件管理工具集
from langchain_community.agent_toolkits import FileManagementToolkit
from pydantic import BaseModel, Field
from langchain_core.output_parsers import JsonOutputParser
import os

# 大模型初始化
model = ChatOpenAI(
    model_name="qwen-plus",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key="[你的API Key]",
)

# 定义系统消息提示模板内容
system_message_prompt_template = SystemMessagePromptTemplate.from_template(
    "你是一个专业的前端开发,你可以根据用户的需求,编写前端代码。"
)

# 定义用户消息提示模板内容
human_message_prompt_template = HumanMessagePromptTemplate.from_template(
    "帮我编写一个主题为{topic}的html文件,最后返回json格式的结果,格式为{format_instructions}。"
)

# 使用BaseModel定义一个名为ResponseFormat的数据模型
class ResponseFormat(BaseModel):
    code: int = Field(description="状态码,0表示成功,1表示失败")
    message: str = Field(description="返回的消息")

# 使用JsonOutputParser类初始化一个JSON输出解析器,并关联ResponseFormat数据模型
json_parser = JsonOutputParser(
    pydantic_object=ResponseFormat,
)

# 使用ChatPromptTemplate类的from_messages方法创建聊天提示模板,由系统消息提示模板和用户消息提示模板组成
chat_prompt_template = ChatPromptTemplate.from_messages(
    [system_message_prompt_template, human_message_prompt_template]
)

# 使用partial方法为聊天提示模板预填充变量
chat_prompt_template = chat_prompt_template.partial(
    format_instructions=json_parser.get_format_instructions()
)

# 创建智能体,传入初始化后的模型以及FileManagementToolkit获取的工具集
agent = create_agent(
    model=model, tools=FileManagementToolkit(root_dir=os.getcwd()).get_tools()
)

# 通过智能体的invoke方法发起调用,传入构造好的输入数据
response = agent.invoke(
    {"messages": chat_prompt_template.format_messages(topic="静夜思")},
)

print(response["messages"][-1].content)
相关推荐
网安蟹佬霸21 分钟前
区块链与智能合约安全实战:从Solidity审计到DeFi漏洞深度剖析
运维·前端·网络·安全·自动化·区块链·智能合约
念何架构之路25 分钟前
Gin响应渲染
前端·javascript·gin
invicinble30 分钟前
设计网站的底层思路(深刻版本)
前端
三8441 小时前
WordPress REST API 参数校验机制剖析:为什么 author__not_in 无法直接盲注?
服务器·前端·数据库
ITmaster07311 小时前
Vibe Coding 时代:Vue 消失了还是 React 太强?
前端·vue.js·react.js
WebInfra1 小时前
Rspack 2.2 发布:30+ 项性能优化,拥抱 Solid 2.0
前端·javascript·前端框架
额额额对了1 小时前
Linux 进程管理详解:从概念到实战
java·服务器·前端
fatcoder1 小时前
玩转 Redis · Set 篇
前端·redis·后端
爱喝麻油的小哆1 小时前
🐾 Day 5|桌面数字人-接入llm可以对话啦
前端·three.js
我叫黑大帅1 小时前
关于没有对生产者做校验的思考
前端·面试·架构