Agent开发_1

第一个简单的Angent了解基本语法

话不多说,直接上代码

from langchain.agents import create_agent
from langchain_ollama import ChatOllama
from langchain_core.tools import tool

@tool(description="天气查询")
def get_weather() -> str:
    return "可能是晴天☀️"

agent = create_agent(
    model=ChatOllama(
        model="qwen3:4b"
    ),   # 智能体的大脑
    tools=[get_weather],   # 工具集
    system_prompt="你是一个聊天助手,可以回答用户问题.",   # 提示词
)

res = agent.invoke(
    {
        "messages": [
            {"role": "user", "content": "明天北京天气怎么样"},
        ]
    }
)

for msg in res["messages"]:
    print(type(msg).__name__, msg.content)

image
其中,有几个关键点要注意

当前agent的“大脑”模型要支持使用工具集才可以
用户提问后,ai会思考一下使用哪个工具集,然后调用工具获得输出,输出后,ai结合输出内容进行回答问题

流式输出

看代码

from langchain.agents import create_agent
from langchain_ollama import ChatOllama
from langchain_core.tools import tool

@tool(description="天气查询, 传入城市名称,获取气温")
def get_weather(city_name: str) -> str:
    return f"明天{city_name}是晴天☀️,最好53摄氏度 最低13摄氏度"

@tool(description="穿衣推荐,传入温度返回衣服种类")
def get_clothes_recommend(temperature: int) -> str:
    if 0 <= temperature < 10:
        return "毛衣"
    elif 10 <= temperature < 20:
        return "秋衣"
    elif 20 <= temperature < 30:
        return "T恤"
    else:
        return "啥也别穿了"


agent = create_agent(
    model=ChatOllama(
        model="qwen3:4b"
    ),   # 智能体的大脑
    tools=[get_weather, get_clothes_recommend],   # 工具集
    system_prompt="你是一个聊天助手,可以回答用户问题.",   # 提示词
)

for chunk in agent.stream(
    {
        "messages": [
            {"role": "user", "content": "明天北京天气怎么样,我要怎么穿衣服啊,我可不想感冒"},
        ]
    },
    stream_mode="values"    # 这里设置流式输出
):
    latest_message = chunk['messages'][-1]
    if latest_message.content:
        print(type(latest_message).__name__, latest_message.content)

    try:
        if latest_message.tool_calls:
            print(f"工具调用: {[tc['name'] for tc in latest_message.tool_calls]}")
    except AttributeError as e:
        pass

image
不得不说,ai还是很会调用工具的,即使是带参数的函数工具也可以
后面哪个异常捕获是因为并不是每一步输出都有调用工具,所以没有这一条就捕获异常不做处理

EeAct框架

核心思想就是:
思考 -> 行动 -> 观察 -> 循环直到合适的结果
使用from langchain.agents import create_agent创建的agent已经是这个框架下的了,其是支持并行调用的

posted @ 2026-04-26 15:39  灵垚克府  阅读(10)  评论(0)    收藏  举报