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
结束对话
相关推荐
啦啦啦!几秒前
c++AI大模型接入SDK项目
开发语言·数据结构·c++·人工智能·算法
东北洗浴王子讲AI2 分钟前
GPT-5.4在自动化测试与质量保障中的创新应用实践
人工智能·gpt·自然语言处理·chatgpt
淬炼之火6 分钟前
笔记:对MoE混合专家模型的学习和思考
人工智能·笔记·学习·语言模型·自然语言处理
憨波个8 分钟前
【说话人日志】从固定输出到可变说话人数:EEND-EDA
人工智能·深度学习·音频·语音识别
sali-tec9 分钟前
C# 基于OpenCv的视觉工作流-章49-人脸检测
图像处理·人工智能·opencv·算法·计算机视觉
人工智能AI技术11 分钟前
“小飞贼”Little Snitch杀入Linux,内核级流量拦截
人工智能
永霖光电_UVLED13 分钟前
CEA-Leti 和 CEA-List 已宣布与 Powerchip 半导体制造公司 (PSMC) 合作
人工智能·生成对抗网络·汽车·制造·激光
斯班奇的好朋友阿法法13 分钟前
Django 项目打包部署完整指南(适配你的项目,零报错)
python·django·sqlite
林开落L13 分钟前
【项目实战】博客系统完整测试报告(含自动化+性能测试)
python·功能测试·jmeter·自动化·postman·性能测试·xmind
ai产品老杨13 分钟前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构