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
结束对话
相关推荐
zenRRan3 分钟前
用中等难度prompt做高效post training
人工智能·深度学习·机器学习·计算机视觉·prompt
Hello.Reader21 分钟前
Flink DataStream「全分区窗口处理」mapPartition / sortPartition / aggregate / reduce
大数据·python·flink
网安INF21 分钟前
Python核心数据结构与函数编程
数据结构·windows·python·网络安全
列兵阿甘36 分钟前
知微传感Dkam系列3D相机SDK例程篇:Python设置相机触发模式
python·数码相机·3d
格林威37 分钟前
短波红外相机的简单介绍和场景应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·工业相机·工业镜头
风口猪炒股指标41 分钟前
《白日梦想家》片段与认知模式的思考
人工智能·博弈论·群体博弈·人生哲学·自我引导觉醒
lihuayong1 小时前
LangGraph React智能体 - 推理与行动的完美结合
人工智能·langgraph·react 智能体
机器之心1 小时前
Meta用40万个GPU小时做了一个实验,只为弄清强化学习Scaling Law
人工智能·openai
曾经的三心草1 小时前
OpenCV5-图像特征harris-sift-特征匹配-图像全景拼接-答题卡识别判卷
人工智能·opencv·计算机视觉
查士丁尼·绵1 小时前
笔试-精准核酸检测
python