简单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()
相关推荐
西西小飞龙24 分钟前
Less/Sass Mixins vs. Extend
前端·less·sass
syjy226 分钟前
(含下载)BeTheme WordPress主题使用教程
前端·wordpress·wordpress建站
Misnice35 分钟前
shadcn如何使用
前端·reactjs
h_jQuery39 分钟前
vue使用gm-crypto对数据进行sm4加密处理
前端·javascript·vue.js
阿赛工作室1 小时前
Vue中onBeforeUnmount不触发的解决方案
前端·javascript·vue.js
码王吴彦祖1 小时前
顶象 AC 纯算法迁移实战:从补环境到纯算的完整拆解
java·前端·算法
小叶lr1 小时前
jenkins打包前端样式丢失/与本地不一致问题
运维·前端·jenkins
浩星2 小时前
electron系列1:Electron不是玩具,为什么桌面应用需要它?
前端·javascript·electron
ZC跨境爬虫2 小时前
Scrapy工作空间搭建与目录结构解析:从初始化到基础配置全流程
前端·爬虫·python·scrapy·自动化
小村儿2 小时前
连载04-最重要的Skill---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程