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
结束对话
相关推荐
每天一个java小知识3 小时前
AI Agent
人工智能
小徐敲java3 小时前
python使用s7协议与plc进行数据通讯(HslCommunication模拟)
开发语言·python
猫头虎3 小时前
如何解决 pip install 编译报错 fatal error: hdf5.h: No such file or directory(h5py)问题
人工智能·python·pycharm·开源·beautifulsoup·ai编程·pip
龙赤子3 小时前
人工智能AI的大框架
人工智能
比奥利奥还傲.3 小时前
本地+AI+大模型自由用!Cherry+Studio打破局域网限制
人工智能
雪碧聊技术3 小时前
深度学习、机器学习、人工智能三者的关系
人工智能·深度学习·机器学习
β添砖java3 小时前
机器学习初级
人工智能·机器学习
p***23363 小时前
python的sql解析库-sqlparse
数据库·python·sql
陈奕昆3 小时前
n8n实战营Day3:电商订单全流程自动化·需求分析与流程拆解
大数据·开发语言·人工智能·自动化·需求分析·n8n
努力改掉拖延症的小白3 小时前
Intel笔记本也能部署大模型(利用Ultra系列gpu通过优化版ollama实现)
人工智能·ai·语言模型·大模型