LangGraph构建Ai智能体-2-超简单智能体

前言

本文将使用LangGraph搭建超级简单的智能体,我们使用阿里的通义千问作为我们的大模型API。

阿里相关的APIkey等,可以参考 如何通过OpenAI接口调用通义千问模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心

环境

基础python的环境搭建,可参考上篇文章。下面安装下必须的依赖

bash 复制代码
pip install requests
pip install langgraph
pip install python-dotenv
pip install langchain_openai 

.env文件

bash 复制代码
BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENAI_API_KEY="自己的key放到这里"

最简单的智能体

搭建一个直接解决问题的智能体,问题都是写死的,主要展示下langGraph的大模型使用流程

步骤

  1. 加载环境变量
  2. 创建大模型
  3. 定义工作流
  4. 调用工作流
  5. 输出答案
python 复制代码
from dotenv import load_dotenv
import os
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END, MessageGraph, MessagesState

# 1. 加载环境变量
load_dotenv()
base_url = os.getenv("BASE_URL")
openai_api_key = os.getenv("OPENAI_API_KEY")
model_name = "qwen-plus"

# 2. 创建大模型
model = ChatOpenAI(base_url=base_url, api_key=openai_api_key, model=model_name)

3. 定义工作流
def call_llm(state: MessagesState):
    messages = state["messages"]
    response = model.invoke(messages[-1].content)
    return {"messages": [response]}
    
workflow = StateGraph(MessagesState)
workflow.add_node("call_llm", call_llm)
workflow.add_edge(START, "call_llm")
workflow.add_edge("call_llm", END)

4. 调用工作流
app = workflow.compile()
input_message = {"messages": [("human", "Kenya的首都是哪里?")]}
for chunk in app.stream(input_message, stream_mode="values"):
    # 5. 输出答案
    chunk["messages"][-1].pretty_print()

输出结果如下

bash 复制代码
================================ Human Message =================================

Kenya的首都是哪里?
================================== Ai Message ==================================

Kenya(肯尼亚)的首都是 **内罗毕(Nairobi)**。

内罗毕是肯尼亚最大的城市,也是东非地区的重要经济、文化和交通中心。它位于肯尼亚中南部,海拔约1795米,气候宜人。内罗毕还 
是许多国际组织和外交机构的所在地,比如联合国在非洲的最大办事处之一。

持续接收用户输入的智能体

上面的示例非常的简单,只是把一个固定的问题交给工作流,然后输出结果。下面我们增加下难度,可以不断的询问大模型,直到我们想结束对话

步骤

  1. 加载环境变量
  2. 创建大模型
  3. 定义工作流
  4. 获取用户输入后调用工作流
  5. 输出答案
python 复制代码
# 一个简单的调用llm的对话示例
# 持续对话的能力
from dotenv import load_dotenv
import os
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END, MessageGraph, MessagesState

# 1. 加载环境变量
load_dotenv()
base_url = os.getenv("BASE_URL")
openai_api_key = os.getenv("OPENAI_API_KEY")
model_name = "qwen-plus"

#2. 创建大模型
model = ChatOpenAI(base_url=base_url, api_key=openai_api_key, model=model_name)

3. 定义工作流
def call_llm(state: MessagesState):
    messages = state["messages"]
    response = model.invoke(messages[-1].content)
    return {"messages": [response]}
workflow = StateGraph(MessagesState)
workflow.add_node("call_llm", call_llm)
workflow.add_edge(START, "call_llm")
workflow.add_edge("call_llm", END)
app = workflow.compile()


# 持续对话
def interact_with_agent():
    while True:
        # 4. 获取用户输入后调用工作流
        user_input = input("You: ")
        if user_input.lower() in ["exit", "quit", "q"]:
            print("结束对话")
            break
        input_message = {"messages": [("human", user_input)]}
        for chunk in app.stream(input_message, stream_mode="values"):
            # 5. 输出答案
            chunk["messages"][-1].pretty_print()
# 开始交互
interact_with_agent()

输出结果

bash 复制代码
You: 你好,你是谁
================================ Human Message =================================

你好,你是谁
================================== Ai Message ==================================

你好!我是Qwen,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问
题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等
。有什么我可以帮你的吗?
You: 帮我计算1+1
================================ Human Message =================================

帮我计算1+1
================================== Ai Message ==================================

1 + 1 = 2
You: exit
结束对话
相关推荐
AI街潜水的八角1 小时前
深度学习十种食物分类系统1:数据集说明(含下载链接)
人工智能·深度学习·分类
敷衍zgf1 小时前
Ernie_health + ProtoNet + Supervised-Contrastive Learning实现小样本意图分类与槽位填充
人工智能·自然语言处理·数据挖掘
却道天凉_好个秋1 小时前
OpenCV(二十三):透视变换
人工智能·opencv·计算机视觉
诸葛务农1 小时前
光刻胶分类与特性:正性胶和负性胶以及SU-8厚胶和AZ 1500 系列光刻胶(下)
人工智能·光刻胶
逻极2 小时前
Kiro 安全最佳实践:守护代理式 IDE 的 “防火墙”
ide·人工智能·安全·ai
Danceful_YJ2 小时前
23.目标检测基础
人工智能·目标检测·计算机视觉
不要喷香水2 小时前
26.java openCV4.x 入门-Imgproc之图像尺寸调整与区域提取
java·人工智能·opencv·计算机视觉
央链知播2 小时前
何超谈“AI元宇宙将引领场景革命 “十五五”勾勒科技新蓝图”
人工智能·科技
B站_计算机毕业设计之家2 小时前
深度学习:python人脸表情识别系统 情绪识别系统 深度学习 神经网络CNN算法 ✅
python·深度学习·神经网络·算法·yolo·机器学习·cnn
CV视觉2 小时前
AI 实战篇:用 LangGraph 串联 RAG+MCP Server,打造能直接操控 Jira 的智能体
人工智能·深度学习·机器学习·自然语言处理·langchain·prompt·jira