简单react agent(没有抽象成基类、子类,直接用)--- 非workflow版 ------demo1

代码

可直接运行

复制代码
"""
简单Agent示例 - 继承StandardReActWorkflow

演示如何快速创建一个标准ReAct模式的Agent,
只需要定义工具函数即可。
"""

from langchain_core.tools import tool
from typing import List, Dict
from langchain_core.tools import BaseTool

from base import StandardReActWorkflow, LLMConfig


class SimpleCalculatorAgent(StandardReActWorkflow):
    """
    简单计算器Agent
    
    功能:
    - 加法运算
    - 乘法运算
    - 天气查询
    - 电影信息查询
    """
    
    def __init__(self, llm_config: LLMConfig = None):
        """初始化简单计算器Agent"""
        super().__init__(llm_config)
    
    @tool
    def add(self, a: int, b: int) -> int:
        """加法运算"""
        result = a + b
        print(f"执行加法: {a} + {b} = {result}")
        return result
    
    @tool
    def multiply(self, a: int, b: int) -> int:
        """乘法运算"""
        result = a * b
        print(f"执行乘法: {a} * {b} = {result}")
        return result
    
    @tool
    def query_weather(self, location: str) -> str:
        """查询天气"""
        print(f"------------------------------------------调用 query_weather ------------------------------------------------")
        result = f"{location}: 天气是暴风雨"
        return result
    
    @tool
    def query_film_info(self, film: str) -> str:
        """查询电影票房等信息"""
        print(f"------------------------------------------调用 query_film_info ------------------------------------------------")
        result = f"{film}: 电影票房是80亿"
        return result
    
    def get_tools(self) -> List[BaseTool]:
        """返回工具列表"""
        return [self.add, self.multiply, self.query_weather, self.query_film_info]
    
    def get_tools_dict(self) -> Dict[str, BaseTool]:
        """返回工具名称到工具对象的映射"""
        return {
            "add": self.add,
            "multiply": self.multiply,
            "query_weather": self.query_weather,
            "query_film_info": self.query_film_info
        }


def main():
    """主函数 - 演示Agent使用"""
    print("=== 简单计算器Agent示例 ===\n")
    
    # 创建Agent实例(使用默认配置)
    agent = SimpleCalculatorAgent()
    
    # 测试用例1:数学计算
    print("测试1: 数学计算")
    result1 = agent.run("请计算 3 * 12 的结果")
    print(f"结果: {result1}\n")
    
    # 测试用例2:复合查询(天气 + 电影信息)
    print("测试2: 复合查询")
    result2 = agent.run("上海天气如何,以及电影《哪吒》的票房是多少")
    print(f"结果: {result2}\n")
    
    # 测试用例3:多步计算
    print("测试3: 多步计算")
    result3 = agent.run("先计算 5 + 3,然后把结果乘以 4")
    print(f"结果: {result3}\n")


if __name__ == "__main__":
    main()
相关推荐
swipe8 分钟前
11|(前端转全栈)购物车不能只存在前端:用户维度数据如何在后端落库
前端·后端·全栈
勇往直前plus1 小时前
Vue3(篇四)单页面应用到路由管理
javascript·typescript·前端框架·vue
Chengbei112 小时前
云安全漏洞挖掘SKILL、一站式云漏洞挖掘工具,支持S3爆破、IMDS探测、K8s检测与AK/SK权限利用
前端·人工智能·网络安全·云原生·容器·kubernetes·系统安全
不简说3 小时前
JS 代码技巧 vol.9 — 20 个设计模式在真实项目里的应用
前端·javascript·github
CoderLiu3 小时前
Agent 工程的下一层:为什么「把流程写成图」还不够,还需要 Graph Engineering
前端·人工智能·后端
勇往直前plus3 小时前
Vue3(篇三) Element Plus
前端·javascript·typescript·vue
爱勇宝3 小时前
《道德经》第 8 章:真正高级的能力,像水一样成事
前端·后端·程序员
Revolution613 小时前
数组本身没有 map,为什么还能直接调用:原型链怎样查找属性
前端·javascript·面试
bonechips3 小时前
RAG实战(一):EPUB 加载、文本切割与向量入库
前端·数据库
swipe3 小时前
10|(前端转全栈)库存扣减为什么最容易出事故?SKU、并发与原子更新
前端·后端·全栈