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
结束对话
相关推荐
程序员小远16 小时前
使用Postman进行一次完整的接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
Yvonne爱编码16 小时前
JAVA数据结构 DAY1-集合和时空复杂度
java·数据结构·python
DN202016 小时前
AI销售机器人:节日祝福转化率提升30倍
人工智能·python·深度学习·机器学习·机器人·节日
爱喝可乐的老王17 小时前
PyTorch简介与安装
人工智能·pytorch·python
看我干嘛!17 小时前
第三次python作业
服务器·数据库·python
deephub17 小时前
用 PyTorch 实现 LLM-JEPA:不预测 token,预测嵌入
人工智能·pytorch·python·深度学习·大语言模型
量子-Alex17 小时前
【多模态大模型】Qwen2-VL项目代码初步解析
人工智能
飞鹰5117 小时前
深度学习算子CUDA优化实战:从GEMM到Transformer—Week4学习总结
c++·人工智能·深度学习·学习·transformer
工程师老罗17 小时前
Pytorch如何验证模型?
人工智能·pytorch·深度学习
Hi_kenyon17 小时前
Skills精选
人工智能