Type something to search...
精通 smolagents:创建 AI 代理的全面指南,包含来自 hugging face 的实用示例

精通 smolagents:创建 AI 代理的全面指南,包含来自 hugging face 的实用示例

smolagents

读者们好 👋 希望一切都好 😊

上图是由 smolagents 框架生成的,看起来很可爱,对吧。 在本文的结尾,您还将了解到如何使用 hugging face 的 smolagents 创建图像

Agent 生态系统

什么是 Agent?

Agent 是一个利用 AI 模型与其环境交互以实现用户定义目标的系统。它结合了推理、规划和执行操作(通常通过外部工具)来完成任务。

可以将 Agent 视为具有两个主要部分:

1. 大脑 (AI 模型)

这是所有思考发生的地方。 AI 模型处理推理和规划。 它根据情况决定要采取哪些操作。

2. 身体(能力和工具)

这部分代表了 Agent 能够做的一切。

可能的操作范围取决于 Agent 所配备的。 例如,由于人类没有翅膀,他们无法执行“飞行”操作,但他们可以执行“行走”、“跑步”、“跳跃”、“抓取”等操作。

我们为 Agent 使用什么类型的 AI 模型?

在 Agent 中发现的最常见的 AI 模型是 LLM(大型语言模型),它将文本作为输入并输出文本。

众所周知的例子有 OpenAI 的 GPT4、Meta 的 LLama、Google 的 Gemini 等。这些模型已经在大量的文本上进行了训练,并且能够很好地泛化。 我们将在 下一节 中了解更多关于 LLM 的信息。

也可以使用接受其他输入作为 Agent 核心模型的模型。 例如,视觉语言模型 (VLM) 就像一个 LLM,但也能理解图像作为输入。 我们现在将专注于 LLM,稍后将讨论其他选项。

AI 如何对其环境采取行动?

LLM 是很棒的模型,但它们只能生成文本。

但是,如果您要求像 HuggingChat 或 ChatGPT 这样的知名聊天应用程序生成图像,它们就可以! 这是怎么可能的?

答案是 HuggingChat、ChatGPT 和类似应用程序的开发人员实现了附加功能(称为工具),LLM 可以使用这些工具来创建图像。

致谢:HuggingFace

Agent 可以执行什么类型的任务?

Agent 可以通过我们通过工具实施以完成操作的任何任务。

例如,如果我编写一个 Agent 作为我电脑上的个人助理(如 Siri),并且我要求它“向我的经理发送一封电子邮件,要求推迟今天的会议”,我可以给它一些代码来发送电子邮件。 这将是 Agent 需要发送电子邮件时可以使用的新工具。 我们可以用 Python 编写它:

def send_message_to(recipient, message):
    """Useful to send an e-mail message to a recipient"""
    ...
send_message_to("Manager", "Can we postpone today's meeting?")

正如我们将看到的,LLM 将生成代码来运行工具,当它需要时,从而完成所需的任务。

工具的设计非常重要,并且对您的 Agent 的质量有很大影响。 某些任务将需要制作非常特定的工具,而其他任务可以使用“web_search”等通用工具来解决。

请注意,操作与工具不同。 例如,一个操作可能涉及使用多个工具来完成。

允许 Agent 与其环境交互,可以使公司和个人在现实生活中使用。

示例 1:个人虚拟助手

像 Siri、Alexa 或 Google Assistant 这样的虚拟助手在代表用户与其数字环境交互时充当 Agent。

他们获取用户查询,分析上下文,从数据库中检索信息,并提供响应或启动操作(如设置提醒、发送消息或控制智能设备)。

示例 2:客户服务聊天机器人

许多公司部署聊天机器人作为 Agent,它们以自然语言与客户交互。

这些 Agent 可以回答问题、指导用户完成故障排除步骤、在内部数据库中打开问题,甚至完成交易。

他们的预定义目标可能包括提高用户满意度、减少等待时间或提高销售转化率。 通过直接与客户互动、从对话中学习并随着时间的推移调整他们的回应,他们展示了 Agent 行动的核心原则。

示例 3: 电子游戏中的 AI 非玩家角色

由 LLM 驱动的 AI 智能体可以使非玩家角色 (NPC) 更加动态和不可预测。

他们可以根据上下文做出反应,适应玩家的互动,并生成更细微的对话,而不是遵循固定的行为树。 这种灵活性有助于创造更逼真、更具吸引力的角色,这些角色会随着玩家的行动而发展。

它们是如何工作的?

智能体将首先思考,然后行动,然后观察以执行任何操作

致谢:HuggingFace

总览:Congo 智能体

步骤 1:用户请求“给我拿一杯咖啡” Congo 智能体

步骤 2:Congo 智能体 思考和计划(将思考和计划选择哪些工具来完成用户请求)Congo 智能体 进行推理和计划,确定他需要的步骤和工具:

  1. 去厨房
  2. 使用咖啡机
  3. 冲泡咖啡
  4. 把咖啡拿回来

步骤 3:Congo 智能体 使用工具完成用户请求

什么是 LLM? 大脑(AI 模型)

正如我们已经了解的 llm,我不想详细介绍,但我将重点介绍几件事。

LLM 是一种擅长理解和生成人类语言的 AI 模型。 它们在大量文本数据上进行训练,使它们能够学习语言中的模式、结构,甚至细微差别。 这些模型通常由数百万个参数组成。

如今,大多数 LLM 都建立在 Transformer 架构之上——一种基于“注意力”算法的深度学习架构,自 2018 年 Google 发布 BERT 以来就引起了极大的兴趣。

Transformer 有 3 种类型:

编码器 基于编码器的 Transformer 将文本(或其他数据)作为输入,并输出该文本的密集表示(或嵌入)。

示例:Google 的 BERT

  • 用例:文本分类、语义搜索、命名实体识别
  • 典型大小:数百万个参数

解码器 基于解码器的 Transformer 侧重于一次生成一个新标记以完成一个序列。

示例:Meta 的 Llama

  • 用例:文本生成、聊天机器人、代码生成
  • 典型大小:数十亿(以美国人的说法,即 ¹⁰⁹)个参数

Seq2Seq(编码器-解码器) 一个序列到序列的 Transformer 结合了一个编码器和一个解码器。 编码器首先将输入序列处理成一个上下文表示,然后解码器生成一个输出序列。

示例:T5、BART

  • 用例:翻译、摘要、释义
  • 典型大小:数百万个参数

Attention is all you need

Transformer 架构的一个关键方面是 Attention。当预测下一个词时,句子中的每个词的重要性并不相同;例如句子“法国的首都是……”中的“法国”和“首都”这两个词携带了最多的含义。

来源:HuggingFace

这种识别预测下一个 token 最相关词的过程已被证明非常有效。

虽然 LLM 的基本原理——预测下一个 token——自 GPT-2 以来一直保持一致,但在扩展神经网络和使 attention 机制适用于越来越长的序列方面取得了重大进展。

如果您与 LLM 交互过,您可能熟悉术语上下文长度,它指的是 LLM 可以处理的最大 token 数量,以及它拥有的最大attention span

什么是 AI 工具?主体

一个工具是提供给 LLM 的一个函数。此函数应实现一个明确的目标。

以下是 AI Agent 中一些常用的工具:

这些仅仅是示例,实际上您可以为任何用例创建一个工具!

一个好的工具应该能够补充 LLM 的强大功能。

例如,如果您需要执行算术运算,为您的 LLM 提供一个计算器工具将比依赖该模型的原生功能提供更好的结果。

此外,LLM 根据其训练数据预测提示的完成,这意味着它们的内部知识只包括在训练之前发生的事件。因此,如果您的 Agent 需要最新的数据,您必须通过某种工具提供它。

例如,如果您直接询问 LLM(没有搜索工具)今天的天气,LLM 可能会产生随机的天气。

来源:Huggingface

一个工具应包含:

  • 对该函数作用的文本描述。
  • 一个Callable(用于执行操作)。
  • 带有类型的Arguments
  • (可选)带有类型的输出。

工具如何工作?

正如我们所看到的,LLM 只能接收文本输入并生成文本输出。它们无法自行调用工具。当我们谈论向 Agent 提供工具时,我们的意思是,我们教会 LLM 有工具的存在,并要求模型生成文本,以便在需要时调用工具。例如,如果我们提供一个工具,用于从互联网上查询某个位置的天气,然后询问 LLM 巴黎的天气,LLM 将识别该问题为使用我们教给它的“天气”工具的相关机会。LLM 将生成文本,以代码的形式,调用该工具。Agent 有责任解析 LLM 的输出,识别需要调用工具,并代表 LLM 调用该工具。然后,来自工具的输出将被发送回 LLM,LLM 将为用户编写其最终响应。

来自工具调用的输出是对话中的另一种消息类型。工具调用步骤通常不会显示给用户:Agent 检索对话,调用工具,获取输出,将它们添加为新的对话消息,并将更新后的对话再次发送给 LLM。从用户的角度来看,就像 LLM 使用了该工具,但实际上是我们的应用程序代码(Agent)完成了它。

核心组件

Agent 在一个持续的循环中工作:思考(Thought)→ 行动(Act)和观察(Observe)。

让我们一起分解这些动作:

  1. 思考:Agent 的 LLM 部分决定下一步应该做什么。
  2. 行动:Agent 通过使用相关的参数调用工具来采取行动。
  3. 观察:模型会思考来自工具的响应。

思考-行动-观察循环

这三个组件在一个连续的循环中协同工作。用编程的类比来说,Agent 使用一个 while 循环:循环持续到 Agent 的目标得到满足。

从视觉上看,它看起来像这样:

来源:HuggingFace

在许多 Agent 框架中,规则和指南直接嵌入到系统提示中,确保每个循环都遵循定义的逻辑。

在一个简化的版本中,我们的系统提示可能看起来像这样:

来源:HuggingFace

我们在这里看到,在系统消息中,我们定义了:

  • Agent 的行为
  • 我们的 Agent 可以访问的工具,正如我们在上一节中描述的那样。
  • 思考-行动-观察循环,我们将其嵌入到 LLM 指令中。

让我们举一个小例子来理解这个过程,然后再深入研究该过程的每个步骤。

Congo,天气代理

我们创建了 Congo,天气代理。

用户向 Congo 提问:“今天印度的天气怎么样?”

Congo 的工作是使用天气 API 工具回答这个问题。

循环的展开方式如下:

思考

内部推理:

收到查询后,Congo 的内部对话可能是:

“用户需要印度的当前天气信息。 我可以使用一个获取天气数据的工具。 首先,我需要调用天气 API 来获取最新的详细信息。”

此步骤显示代理将问题分解为几个步骤:首先,收集必要的数据。

行动

工具使用:

根据其推理以及 Congo 知道 get_weather 工具,Congo 准备了一个 JSON 格式的命令,该命令调用天气 API 工具。 例如,它的第一个操作可能是:

思考:我需要查看印度的当前天气。

{
     "action": "get_weather",
     "action_input": {
       "location": "India"
     }
   }

在这里,操作清楚地指定了要调用的工具(例如,get_weather)以及要传递的参数(“location”:“India”)。

观察

来自环境的反馈:

在工具调用之后,Congo 收到一个观察结果。 这可能是来自 API 的原始天气数据,例如:

“印度当前天气:部分多云,35°C,25% 湿度。”

然后将此观察结果作为附加上下文添加到提示中。 它的作用是现实世界的反馈,确认操作是否成功并提供所需的详细信息。

更新后的思考

反思:

有了观察结果,Congo 更新其内部推理:

“现在我有了印度的天气数据,我可以为用户编写答案。”

最终行动

然后,Congo 生成一个最终响应,其格式与我们告诉它的一样:

思考:我现在有了天气数据。 纽约的当前天气是部分多云,温度为 15°C,湿度为 60%。

最终答案:纽约的当前天气是部分多云,温度为 15°C,湿度为 60%。

此最终操作将答案发送回用户,从而结束循环。

Hugging Face 的 Smolagents 是什么?

一个非常简单的库,可为语言模型解锁代理功能。

“代码代理,即用代码编写其操作的代理(而不是“用于编写代码的代理”)。 为了确保安全,我们支持通过 E2B 在沙盒环境中执行。”

代码代理如何工作?

构建代理

要构建代理,您至少需要两个元素:

  • tools:代理可以访问的工具列表
  • model:一个 LLM,它将成为您的代理的引擎。

首先安装该软件包。

pip install smolagents==1.2.0

场景 1:我想用自然语言查询我的模型 amazon “sales_data”,为了简单起见,我选取了一些记录

使用了简单的代码代理,sql_engine 作为工具

from sqlalchemy import (
    Column,
    Float,
    Integer,
    MetaData,
    String,
    Table,
    create_engine,
    insert,
    inspect,
    text,
)
engine = create_engine("sqlite:///:memory:")
metadata_obj = MetaData()
### create city SQL table
table_name = "sales_data"
sales_data = Table(
    table_name,
    metadata_obj,
    Column("product_id", Integer, primary_key=True),
    Column("product_name", String(16), primary_key=True),
    Column("category", String(16)),
    Column("discounted_price", Float),
    Column("actual_price", Float),
    Column("discount_percentage", Float),
    Column("rating", Integer),
    Column("rating_count", Integer),
    Column("about_product", String(16)),
    Column("user_id", Integer),
    Column("user_name", String(16)),
    Column("review_id", Integer),
    Column("review_title", String(16)),
    Column("review_content", String(16)),
    Column("img_link", String(16)),
    Column("product_link", String(16))
)
metadata_obj.create_all(engine)
rows =[{
  "product_id": "B0BPJBTB3F",
  "product_name": "Khaitan ORFin Fan heater for Home and kitchen-K0 2215",
  "category": "Home\u0026Kitchen|Heating,Cooling\u0026AirQuality|RoomHeaters|FanHeaters",
  "discounted_price": "1299.0",
  "actual_price": "2495.0",
  "discount_percentage": "0.48",
  "rating": "2",
  "rating_count": "2",
  "about_product": "Khaitan Orfin Fan heater for Home and kitchen|POWERFUL 2000 WATT|HEATING POSITION 1000 W-2000W|ADJUSTABLE THERMOSTAT TEMP.CONTROL|AUTOMATIC THERMAL CUTOUT FOR SAFETY|FRONT GRILL FOR SAFETY|TURBO FAN",
  "user_id": "AGHT3K4KSG5MAQUSXRDT5VNB73GA,AE4Q5XQ7SZW35EEUJKQ3IV2IIBQQ",
  "user_name": "Manidipa Sengupta,Vidisha",
  "review_id": "R1OO2ED6615EX1,RR4S5JTJMCPA5",
  "review_title": "Bad quality,Amazing product..",
  "review_content": "The heating capacity is zero .Moreover i have initiated return request. Noone has come to collect it,Best heater at this price. Quality is very good . Suggest everyone to purchase this heater.......... amazing product to buy...",
  "img_link": "https://m.media-amazon.com/images/W/WEBP_402378-T1/images/I/31B8Pd1SmLL._SX300_SY300_QL70_FMwebp_.jpg",
  "product_link": "https://www.amazon.in/Khaitan-ORFin-heater-Home-kitchen-K0/dp/B0BPJBTB3F/ref\u003dsr_1_326?qid\u003d1672923609\u0026s\u003dkitchen\u0026sr\u003d1-326"
}, {
  "product_id": "B0BFBNXS94",
  "product_name": "Personal Size Blender, Portable Blender, Battery Powered USB Blender, with Four Blades, Mini Blender Travel Bottle for Juice, Shakes, and Smoothies (Pink)",
  "category": "Home\u0026Kitchen|Kitchen\u0026HomeAppliances|SmallKitchenAppliances|HandBlenders",
  "discounted_price": "669.0",
  "actual_price": "1499.0",
  "discount_percentage": "0.55",
  "rating": "2.3",
  "rating_count": "13",
  "about_product": "✔【Easy to carry around】- This handheld blender is equipped with a travel cover for easy carrying. You can drink nutritious juices, milkshakes or smoothies wherever you want, such as home, office, gym, travel or any other outdoor activities. In addition, it can be taken on the plane.|✔【Portable design】: The unique design can separate the base and the cup body. The USB juicer cup is equipped with 1400mAh rechargeable high-quality batteries that can be recharged in a variety of ways, like charging by power bank, AC Adapter, and charging time is 3-5 hours; fully charged can produce 15-20 cups of juice.|✔【food grade material】- The portable blender is made by high-quality ABS and silicone, food-grade material. It has unique safety design including Silicone bottom, non-slip and shock absorption.This portable juicer is also a suitable gift for juice and travel enthusiasts.|✔【4 Blade design】- The portable blender for milkshakes and smoothies has a powerful motor base and 4 food-grade stainless steel 3D blades.The SUS304 Stainless Stell of cutter head made with food-grade electrolysis technology is durable and has excellent mixing ability, allowing the pulp to be quickl|✔【One button blending/cleaning】: simple button touch. 350ml capacity when cleaning, just put an appropriate amount of water in the cup and press the button to automatically clean. This can save you a lot of trouble.",
  "user_id": "AHRDA66XO63XYCBZJMW4EUJN3BFQ,AELE2SOO7LBNHXU7UK5F7TGQHA6Q,AHAVCLRCPYO2MFYPTURF33N7XH5A,AE762UDUDQPW4R4QHHTIL7TPTJUA,AEGZSJIUSKF2EKIKGLNKY2CU6WXA",
  "user_name": "Manya,Been,Podili Parasuram,Rejoy Jacob,Priya",
  "review_id": "R1WJ8T3U9P42IU,RM9RH8FX9U95D,R31M8UXT7NLOMY,R18Q7M2R00EW68,R11NHZQ8OKA9U0",
  "review_title": "Nice product i recommend to buy,Do not buy!! Defective product,Wast of money,Very very bad portable,Waste of money its not working properly",
  "review_content": "I liked that it is so convenient to carry,Waste of money. Defective product, cheap quality. doesn't blend at all,https://m.media-amazon.com/images/I/71IVsjyZ13L._SY88.jpg,First charge problemSecond motor proble,https://m.media-amazon.com/images/I/61aXXxIxPwL._SY88.jpg",
  "img_link": "https://m.media-amazon.com/images/I/417TQs3uroL._SX300_SY300_QL70_FMwebp_.jpg",
  "product_link": "https://www.amazon.in/Personal-Blender-Portable-Battery-Smoothies/dp/B0BFBNXS94/ref\u003dsr_1_261_mod_primary_new?qid\u003d1672923605\u0026s\u003dkitchen\u0026sbo\u003dRZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D\u0026sr\u003d1-261"
}, {
  "product_id": "B0B7L86YCB",
  "product_name": "Green Tales Heat Seal Mini Food Sealer-Impulse Machine for Sealing Plastic Bags Packaging",
  "category": "Home\u0026Kitchen|Kitchen\u0026HomeAppliances|SmallKitchenAppliances|VacuumSealers",
  "discounted_price": "161.0",
  "actual_price": "300.0
### Green Tales Mini 封口机

![](https://m.media-amazon.com/images/W/WEBP_402378-T2/images/I/411NB1EXJNL._SY300_SX300_QL70_FMwebp_.jpg)

*   **product_id**: B0B7L86YCB
*   **product_name**: Green Tales Mini 封口机 脉冲封口机 塑料袋 便携式 手持式 热封口机 食品保鲜储藏 (白色)
*   **category**: Home&Kitchen|Kitchen&HomeAppliances|KitchenStorage&Organization|FoodStorageContainers|FoodSealers
*   **discounted_price**: 249.0
*   **actual_price**: 499.0
*   **discount_percentage**: 0.5
*   **rating**: 2.8
*   **rating_count**: 129
*   **about_product**: ⚡【保持食物新鲜 & 节省金钱】: 使用这款热封口机,您可以重新密封原装塑料袋,保持食物新鲜干燥。无需再购买冷冻袋。减少食物浪费,节省金钱。
    ⚡【易于使用】: 这款迷你袋封口机非常容易使用,使用前按压 5 秒钟预热该物品,然后只需沿任何袋子的边缘滑动即可将其密封。
    ⚡【耐用 & 安全】: 迷你热封口机由优质 ABS 材料制成,耐高温和低温。无毒且耐用。凭借最新技术,这款食品封口机非常安全且易于使用。
    ⚡【便携 & 紧凑】: 这款热封口机小巧便携,您可以轻松地将其放入包中并随身携带。它适用于厨房、露营、旅行等。
    ⚡【广泛应用】: 这款热封口机适用于各种塑料袋,如零食袋、铝箔袋、薯片袋和各种 PVC 材料。
*   **user_id**: A223H037UL075Y6P7B6I5J756N6Q,A366G1167M3U14XW5J6X24W2N7QQ,A3D57P077W4G132B654W242N4X6A,A3G824930212354E664V514N3N6Q,A15F6474B2744468215X613N1U6Q,A2646107924919367559336N6Q,A1433541932087678868450N1U6Q,A1284877197295562997745N6Q
*   **user_name**: Anjali,Priya,Saurabh Singh,Saurabh ,Siddharth ,Ravi,Suman,Rakesh
*   **review_id**: R37U6H0X570G3S,R16U61R3L7R48W,R16H98M099901E,R25YF908Y2337N,R1T2358K250J0H,R21561Y154895F,R30W8158092409,R1992991495816
*   **review_title**: "Good product,Good,Not working,Good product,Good product,Good product,Good product,rmal thin polybag,Good. Works"
*   **review_content**: "It is broken and it is not useful. Please change this product,product is so so... the plastic quality is not so good as per the price.it claims that it can be stuck in the metallic areas like fridge but the magnet is not working.,The first one was not working and the replacement was sent without box with a used piece. The battery had water while I received it and even the delivery person was shocked,This is marvellous product to use . Such a small product but does wonders . And that too given 2 batteries,Great product and lovely packaging,I don\u0027t like it the product it not working,Not satisfied,"
*   **img_link**: ![](https://m.media-amazon.com/images/W/WEBP_402378-T2/images/I/411NB1EXJNL._SY300_SX300_QL70_FMwebp_.jpg)
*   **product_link**: https://www.amazon.in/Green-Tales-Sealer-Impulse-Machine-Packaging/dp/B0B7L86YCB/ref\u003dsr_1_383?qid\u003d1672923611\u0026s\u003dkitchen\u0026sr\u003d1-383

### MR. BRAND 便携式 USB 榨汁机

![](https://m.media-amazon.com/images/I/51pFS9lDzML._SY300_SX300_QL70_FMwebp_.jpg)

*   **product_id**: B0BNDGL26T
*   **product_name**: MR. BRAND 便携式 USB 榨汁机 电动 USB 榨汁机 搅拌机 搅拌瓶 搅拌机,6 个刀片 可充电瓶 (多种颜色) (MULTI MIXER 6 BLED)
*   **category**: Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|JuicerMixerGrinders
*   **discounted_price**: 499.0
*   **actual_price**: 2199.0
*   **discount_percentage**: 0.77
*   **rating**: 2.8
*   **rating_count**: 109
*   **about_product**: 便携 & 方便充电:这款小巧的轻巧设计让您轻松携带到学校、办公室、公园、露营等任何您想去的地方。它也可以通过移动电源、笔记本电脑、计算机、汽车或其他 USB 设备方便地充电。|易于安全清洁 - 它具有智能安全保护装置、磁感应开关,使用和清洁超级安全,榨汁杯的杯体和底部可以分离,您可以轻松清洁它|多功能 - 使用我们的果汁搅拌机混合各种水果和蔬菜,您可以制作天然美味的果汁、奶昔、冰沙和其他婴儿食品。它非常便携,非常适合旅行、户外活动。|随时随地享受您的果汁。|6 个不锈钢刀片,锋利耐用,可以使用很长时间。
*   **user_id**: AEJKHGA26MUVUZIYWZOW4B6I4X7Q,AF3B47EOSBULYG63EGZZZGO6HTNA,AGNSXRFJBDVGM7FS7YYPNCEO7XFQ,AHR53IW5LAAXGGFK3DRWRMXMM7KQ,AE5W6S5KCJV6L2WMBIOKYWQJN37Q,AH5J4DROVHI6XHMTCBAK7WWU3F4Q,AE5KAK3S3XZDPRUR2VCND2QNZTUQ,AEKG7ELYA43YNPZ2YT3ORIL2VSOA
*   **user_name**: Yashvant Gote,Nargis Sultana,S.I.KUMAR,Ravi,Lokesh Hegde,Abhinav Anand,Any babar,Sarada peram
*   **review_id**: RGB7OLWZEBW2D,R35V1I6KBBWDA1,R2S9K0UTNSD0L6,R3RC91ZJN8FXRE,RHM5Q098AI06R,R2QOHI14M69TVA,R2PQH5L3O1O0F4,R3TYY0655P2RMO
*   **review_title**: Portable but not much powerful,not so good. power back up is very poor.its more like a toy for my 9 years old girl.,500 rs ok,Don\u0027t be fooled by ratings, not a good product,Not recommended,Worst Battery, no use,It is affordable .,User friendly blender, Recommended to buy nice

### SHREENOVA 蓝牙健身追踪器

![](https://m.media-amazon.com/images/I/41lnTFZGz9L._SX300_SY300_QL70_ML2_.jpg)

*   **product_id**: B0BBVKRP7B
*   **product_name**: SHREENOVA Bluetooth Fitness Tracker
*   **category**: Electronics|WearableTechnology|Smartwatches
*   **discounted_price**: 399.0
*   **actual_price**: 1499.0
*   **discount_percentage**: 0.73
*   **rating**: 1.8
*   **rating_count**: 11
*   **about_product**: SHREENOVA 智能手表,带通话功能,男士女士蓝牙智能手表,健身追踪器,带心率和睡眠监测器,活动追踪器,具有多种运动模式,IP67 防水智能手表(黑色)|拨打和接听电话:这款智能手表允许您使用其内置扬声器和麦克风直接从手腕拨打和接听电话。无需伸手拿手机即可随时随地保持联系。|健身追踪器:跟踪您的步数、距离、燃烧的卡路里和活动时间。监测您的心率和睡眠模式,以更好地了解您的整体健康和健身水平。|多种运动模式:从各种运动模式中选择,以跟踪您的锻炼情况,包括跑步、骑自行车、游泳等。|IP67 防水:这款智能手表防水,因此您可以在游泳或淋浴时佩戴它。
*   **user_id**: A2365H7Q05996XJ2J4H6F6K725PA,A3C64795732B7576X66766W37J2Q,A3O3Q6S637J3R566654657G3A3PA,A1935543636X3243245768888888,A12345678901234567890123456,A98765432109876543210987654,A11111111111111111111111111,A22222222222222222222222222
*   **user_name**: Subhankar ,Sujit ,Amazon Customer,Ravi ,Customer ,Amazon,User,Buyer
*   **review_id**: R12345678901234567890123456,R98765432109876543210987654,R11111111111111111111111111,R22222222222222222222222222,R33333333333333333333333333,R44444444444444444444444444,R55555555555555555555555555,R66666666666666666666666666
*   **review_title**: 无法使用,最糟糕的产品,非常糟糕的产品,浪费钱,糟糕的产品,非常糟糕的产品,非常糟糕的产品,非常糟糕的产品
*   **review_content**: product,Dislike product also not return its only replacement,,Iska tauch kaam nahi kar raha hai aur kewal mobile adoptot se charge karne par on dikh raha phir turat band ho ja raha hai.ise wapas karna hai.,पहिल्या दिवसापासूनच ती वॉच ऑन होत नाही. चार्ज केले तरी पण ऑन होत नाही. पुर्णपणे third class वॉच पाठविली Amazon ने. दिवसेंदिवस Amazon ची सर्व्हिस आणि प्रॉडक्ट bad होत चाललेले दिसत आहे.,Bhot Jada ghatia h h,All the products are very good working there is no any issue till now.
*   **img_link**: https://m.media-amazon.com/images/I/41lnTFZGz9L._SX300_SY300_QL70_ML2_.jpg
*   **product_link**: https://www.amazon.in/SHREENOVA-Bluetooth-Fitness-Activity-Tracker/dp/B0BBVKRP7B/ref\u003dsr_1_338?qid\u003d1672895850\u0026s\u003delectronics\u0026sr\u003d1-338

### IONIX Tap filter Multilayer | Activated Carbon Faucet Water Filters Universal Interface Home Kitchen Faucet Tap Water Clean Purifier Filter Cartridge Five Layer Water Filter-Pack of 1

![](https://m.media-amazon.com/images/I/41n90w1dlJL._SY445_SX342_QL70_FMwebp_.jpg)

*   **product_id**: B0BBLHTRM9
*   **product_name**: IONIX Tap filter Multilayer | Activated Carbon Faucet Water Filters Universal Interface Home Kitchen Faucet Tap Water Clean Purifier Filter Cartridge Five Layer Water Filter-Pack of 1
*   **category**: Home\u0026Kitchen|Kitchen\u0026HomeAppliances|WaterPurifiers\u0026Accessories|WaterPurifierAccessories
*   **discounted_price**: 199.0
*   **actual_price**: 699.0
*   **discount_percentage**: 0.72
*   **rating**: 2.9
*   **rating_count**: 159
*   **about_product**: 水龙头过滤器:内置分层过滤器可以分离椰子活性炭、沸石、PVA 无纺布、亚硫酸钙和橡胶,适用于净化硬水和井水。|健康的生活方式:去除水中的氯、重金属和其他杂质,水更甜,更安全。|易于清洁:家庭和办公室必备品,100% 全新和高质量。耐高温,不易变形。要清洁,只需取下过滤器并在水下冲洗即可。|节水:由柔软的橡胶材料制成,可以防止漏水,从而节省每次使用时的用水量。; 包装清单:1 * 水龙头过滤器|包含的组件:1 X 五层水龙头
*   **user_id**: AF6LRVDRKYWPTZXZLQERZ3LXCWDA,AG7FU75LA5ONPMNEVH6X47PHPHYA,AG3YRWMWYEW3G2WELWCNIU2H7HQQ,AGXZDH5CDJHVZVCYA6555BIZIWTQ,AEP6P6MBRADJL3SDICYEMQUWXVEA,AEVOU4VDGD6M5VOUU47DZ7JRABEA,AGA3BZEL7AM75FQS67KO32HQKWHQ,AHYU5NW2HTBFSIBPELM5BWRVFHDQ
*   **user_name**: Anmol Khanna,G.l.sudhakar,Amazon Customer,manoj,Satya,Swarup Panday,Reyaansh Arora,neha keluskar
*   **review_id**: R9GL8284FSYUG,R1Q6Z3DZDJMDPN,R25CLTZM7X33KC,R3EZN6N234M56M,R3V5ZJK278N7DE,R2D7IYLDOK44OG,R3E1T8ZS17TP57,R388P83LV3P6PH
*   **review_title**: 几天后停止工作,好的。每 4 个月更换一次太多,水龙头过滤器,质量,不净化水,很好的产品,真的很好!,坏
*   **review_content**: 几天后停止工作,好的,它不容易安装。一点水压过滤器就会掉下来。安装是产品的缺点。净水方法很好。安装必须简单。,由于水的问题而出现头发问题,所以为我的浴室买了它。质量好的产品,但在使用几天后过滤过的水


```json
[
  {
    "product_id": "B08YK7BBD2",
    "product_name": "Nirdambhay 手持便携式迷你热封机/塑料封口机,用于食品储存、零食、薯片和其他食品包装袋(多色)",
    "category": "家居与厨房|厨房与用餐|厨房用具和小工具|食品储藏容器|食品储藏袋",
    "discounted_price": "199.0",
    "actual_price": "499.0",
    "discount_percentage": "0.6",
    "rating": "3.0",
    "rating_count": "192",
    "about_product": "手持迷你热封机:由优质 ABS 材料制成,耐高低温。无毒耐用,可长期使用。迷你尺寸,易于存放和携带。这款热封机可以轻松密封您的食品袋,使您的食物更清新,防止受潮和发霉。对于那些喜欢保持物品井井有条的人来说,这是一个必备品。易于使用:这款迷你袋封口机非常容易使用。打开盖子,在使用前按 5 秒预热该物品,然后只需沿着任何袋子的边缘滑动即可密封。您可以根据袋子的厚度调整加热级别。广泛应用:这款迷你袋封口机适用于各种塑料袋,例如零食袋、铝箔袋、薯片袋和各种 PVC 材料。它可以在厨房、客厅、办公室或任何您需要的地方使用。它是保持食物新鲜和井井有条的好帮手。便携方便:这款迷你袋封口机小巧轻便,便于携带。您可以在旅行、露营或野餐时随身携带。这是一种让您的食物在旅途中保持新鲜和井井有条的好方法。包装包括:1 x 迷你热封机(不含电池)。",
    "user_id": "A296E7X2H23Q8,A1B5D029XW49M,A17735L4017Y9Y,A1D91D112U355B,A23Q47H2XJ97U5,A358567A68J571,A18B0701F2908W,A12047QY48418L",
    "user_name": "Anjali,Sowmya,Priya,sowmya,Priya,Anjali,kavya,Sowmya",
    "review_id": "R1Q7Y56232C4S9,R19N55X5J26W91,R21W3302XG8438,R279WJ437M79G,R11046U12E5F6I,R384713W6Q697Q,R1789W577B429A,R3J8X04615L68D",
    "review_title": "好产品,好,好产品,好,好产品,好产品,好产品,好",
    "review_content": "它会密封,有时会烧焦塑料。此外,如果施加正确的压力,密封会脱落,因此它也不可靠。封口机的质量很好,而且密封得很好。唯一的事情是你在密封时必须用力按压它。只需几秒钟即可密封整个包装。当您带着蹒跚学步的孩子旅行并携带大量零食包时,这很好。口袋友好又可爱,工作正常",
    "img_link": "https://m.media-amazon.com/images/W/WEBP_402378-T2/images/I/21rLuqop7cL._SY300_SX300_QL70_FMwebp_.jpg",
    "product_link": "https://www.amazon.in/Nirdambhay-Handheld-Portable-Resealer-Including/dp/B08YK7BBD2/ref\u003dsr_1_338?qid\u003d1672923609\u0026s\u003dkitchen\u0026sr\u003d1-338"
  },
  {
    "product_id": "B09F6D21BY",
    "product_name": "7SEVEN 兼容 LG 电视遥控器,适用于 LG 非魔术智能电视遥控器(不支持鼠标和语音)MR20GA Prime Video 和 Netflix 热键",
    "category": "电子产品|家庭影院、电视和视频|配件|遥控器",
    "discounted_price": "790.0",
    "actual_price": "1999.0",
    "discount_percentage": "0.6",
    "rating": "3.0",
    "rating_count": "103",
    "about_product": "适用于 LG 电视系列所有型号的遥控器兼容|兼容型号:适用于您的 LG 智能电视通用遥控器 AN-MR600G AN-MR650 AN-MR650G ANMR650A ANMR600 AN-MR650B AN-MR19BA AN-MR18BA 等|应用程序热键:Prime Video、Netflix 和自定义您自己的!无需编程或设置。|这是专用的替换遥控器,不是原装遥控器,但功能与原装遥控器 100% 相同,并且涵盖了原装遥控器的所有功能。|注意:此遥控器不支持语音命令",
    "user_id": "AH7NTBDGAMGOFFADEVWJL3O4YQ2A,AEJUIUF6CYKRBWLSOPWPE7KMC3RA,AF45WMWXMOPN3ELUJ2H2N63JWKGA,AH6MPOEE6ICQG3RBULF7TOQVMMEA,AH7QLQDC5BMOKDDRGGWSEP3AQ6IQ,AEIXFEXXMTDJNPWUMOIEA34ZLC7Q,AEQV4U4ZGMGZOWC4RQSUQZGHYSHA,AG7DCRRGNMM7FSENOSNAQTVYBHPQ",
    "user_name": "Jarlina Nath,Sona,Ranjit Harchekar,Myneni Suneeta,prithvi,Srinivas,upender,Ishita Bhadana",
    "review_id": "R1S2PH1JD9B9XB,R3UUKCS12Q0B9X,R16YH8SVJU5W61,R32XCAYQRNE0Q3,R1FQD9T17LXHLF,R17H2I7PYTIEIA,RWEPEYF95XCK9,R14CFFXT17UAJI",
    "review_title": "不好,没有语音识别,没有像原装 LG 遥控器那样的指针光线。这些功能不包括在内,最好的产品,无法正常工作,无法使用,不要购买,它没有指针,无法正常工作,完美",
    "review_content": "遥控器的鼠标功能无法使用,带按钮的遥控器似乎还可以,但没有语音识别,也没有像原装 LG 产品那样的光线指针。希望就网站上的失实陈述获得退款。您在我的投诉后修改了说明。最好的产品,数字按钮无法使用,有缺陷的产品,它不适用于电视,不喜欢该产品,因为它没有指针选项,无法正常工作,购买的最佳选择,因为它很难获得 OLED 电视遥控器的更换...",
    "img_link": "https://m.media-amazon.com/images/W/WEBP_402378-T2/images/I/315sEpeo50L._SX300_SY300_QL70_FMwebp_.jpg",
    "product_link": "https://www.amazon.in/Compatible-Suitable-Control-Non-Support-Netflix/dp/B09F6D21BY/ref\u003dsr_1_344?qid\u003d1672909141\u0026s\u003delectronics\u00

```python
from sqlalchemy import create_engine, insert, inspect, Column, Integer, String, DateTime
from sqlalchemy.orm import Session
from sqlalchemy.ext.declarative import declarative_base
import datetime
import json
import os
## Database connection details (replace with your actual credentials)
db_user = os.environ.get('DB_USER', 'your_db_user')
db_password = os.environ.get('DB_PASSWORD', 'your_db_password')
db_host = os.environ.get('DB_HOST', 'your_db_host')
db_name = os.environ.get('DB_NAME', 'your_db_name')
db_port = os.environ.get('DB_PORT', '5432')  # Default PostgreSQL port

## Construct the database URL
db_url = f"postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
## Create an SQLite database engine
engine = create_engine(db_url)
## Define the base for declarative models
Base = declarative_base()
## Define the sales_data table model
class sales_data(Base):
    __tablename__ = 'sales_data'
    id = Column(Integer, primary_key=True, autoincrement=True)
    product_id = Column(String)
    user_name = Column(String)
    review_id = Column(String)
    review_title = Column(String)
    review_content = Column(String)
    img_link = Column(String)
    product_link = Column(String)
## Create the table in the database
Base.metadata.create_all(engine)
## Sample data (replace with your actual data)
rows = [{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",
  "user_name": "Sourav",
  "review_id": "R39491704X278W",
  "review_title": "Good product",
  "review_content": "Good product",
  "img_link": "https://m.media-amazon.com/images/I/31M4nb0+JKL._SY300_SX300_.jpg",
  "product_link": "https://www.amazon.in/Tokdis-MX-1-Bluetooth-Calling-Smartwatch/dp/B0B82YGCF6/ref=sr_1_370?qid=1672895857&s=electronics&sr=1-370"
},
{
  "product_id": "B0B82YGCF6",

### 带有代码代理的 SQL 引擎

*我们创建了一个 sqlite 表并列出了数据,这些数据被导入到 sales_data 表中*

```python
from smolagents import tool,OpenAIServerModel
api_key = # Replace with your secret name
### Specify the model, which will leverage the api_key we just got
model=OpenAIServerModel(
            model_id="gemini-2.0-flash-exp",
            api_base="https://generativelanguage.googleapis.com/v1beta/openai/",
            api_key=api_key,
            temperature=0.7
        )
@tool
def sql_engine(query: str) -> str:
    """
    Allows you to perform SQL queries on the table. Returns a string representation of the result.
    The table is named 'sales_data'. Its description is as follows:
        Columns:
  - product_id: INTEGER
  - product_name: VARCHAR(16)
  - category: VARCHAR(16)
  - discounted_price: FLOAT
  - actual_price: FLOAT
  - discount_percentage: FLOAT
  - rating: INTEGER
  - rating_count: INTEGER
  - about_product: VARCHAR(16)
  - user_id: INTEGER
  - user_name: VARCHAR(16)
  - review_id: INTEGER
  - review_title: VARCHAR(16)
  - review_content: VARCHAR(16)
  - img_link: VARCHAR(16)
  - product_link: VARCHAR(16)
    Args:
        query: The query to perform. This should be correct SQL.
    """
    output = ""
    with engine.connect() as con:
        rows = con.execute(text(query))
        for row in rows:
            output += "\n" + str(row)
    return output
from smolagents import CodeAgent, HfApiModel
agent = CodeAgent(
    tools=[sql_engine],
    model=model,
)
agent.run("Can you give me the rating_count for each category")

*当我提出查询“*Can you give me the rating_count for each category” 时,代理处理了 nlp 查询并生成了 sql,然后针对表“sales_data”执行了 sql,如下所示

Can you give me the rating_count for each category                                                                                                                                                   │
│                                                                                                                                                                                                      │
╰─ OpenAIServerModel - gemini-2.0-flash-exp ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 0 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ─ Executing this code: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  query = "SELECT category, SUM(rating_count) FROM sales_data GROUP BY category"
  result = sql_engine(query=query)
  print(result)
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Execution logs:
('Computers&Accessories|Accessories&Peripherals|Cables&Accessories|Cables|USBCables', 200)
('Electronics|HomeTheater,TV&Video|Accessories|RemoteControls', 103)
('Electronics|WearableTechnology|SmartWatches', 768)
('Home&Kitchen|Heating,Cooling&AirQuality|RoomHeaters|FanHeaters', 2)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|HandBlenders', 13)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|JuicerMixerGrinders', 109)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|VacuumSealers', 641)
('Home&Kitchen|Kitchen&HomeAppliances|WaterPurifiers&Accessories|WaterPurifierAccessories', 159)
Out: None
[Step 0: Duration 1.87 seconds| Input tokens: 2,373 | Output tokens: 77]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ─ Executing this code: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  query_result = sql_engine(query="SELECT category, SUM(rating_count) FROM sales_data GROUP BY category")
  final_answer(query_result)
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Out - Final answer:
('Computers&Accessories|Accessories&Peripherals|Cables&Accessories|Cables|USBCables', 200)
('Electronics|HomeTheater,TV&Video|Accessories|RemoteControls', 103)
('Electronics|WearableTechnology|SmartWatches', 768)
('Home&Kitchen|Heating,Cooling&AirQuality|RoomHeaters|FanHeaters', 2)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|HandBlenders', 13)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|JuicerMixerGrinders', 109)
('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|VacuumSealers', 641)
('Home&Kitchen|Kitchen&HomeAppliances|WaterPurifiers&Accessories|WaterPurifierAccessories', 159)
[Step 1: Duration 0.83 seconds| Input tokens: 5,113 | Output tokens: 154]
\n('Computers&Accessories|Accessories&Peripherals|Cables&Accessories|Cables|USBCables', 200)\n('Electronics|HomeTheater,TV&Video|Accessories|RemoteControls', 103)\n('Electronics|WearableTechnology|SmartWatches', 768)\n('Home&Kitchen|Heating,Cooling&AirQuality|RoomHeaters|FanHeaters', 2)\n('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|HandBlenders', 13)\n('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|JuicerMixerGrinders', 109)\n('Home&Kitchen|Kitchen&HomeAppliances|SmallKitchenAppliances|VacuumSealers', 641)\n('Home&Kitchen|Kitchen&HomeAppliances|WaterPurifiers&Accessories|WaterPurifierAccessories', 159)

场景 2:获取给定股票的股票价格

使用了代码代理和内置工具 DuckDuckGoSearchTool

from smolagents import CodeAgent, DuckDuckGoSearchTool, LiteLLMModel,OpenAIServerModel
import yfinance as yf
api_key = # Replace with your secret name
### Specify the model, which will leverage the api_key we just got
model=OpenAIServerModel(
            model_id="gemini-2.0-flash-exp",
            api_base="https://generativelanguage.googleapis.com/v1beta/openai/",
            api_key=api_key,
            temperature=0.7
        )
### Define the agent with tools and imports
agent = CodeAgent(
   tools=[DuckDuckGoSearchTool()],
   additional_authorized_imports=["yfinance"],
   model=model
)
### Run the agent to fetch the stock price of Apple Inc.
response = agent.run(
   "is if Microsoft Inc (NASDAQ: AAPL). Use the YFinance Library."
)
### Output the response
print(response)

当我提出查询“获取 Microsoft Inc (NASDAQ: AAPL) 的股票价格。使用 YFinance 库。”时,代理处理了

NLP 查询与生成输出

NLP 查询

NLP 查询通常涉及使用自然语言处理技术来理解和处理用户提出的问题或请求。这些查询可以采用多种形式,从简单的关键词搜索到复杂的语义分析。

以下是一些 NLP 查询的示例:

  • 关键词搜索: “天气预报”,“餐厅推荐”
  • 问答: “巴黎的首都是什么?”,“什么是人工智能?”
  • 意图识别: “我想订一张去伦敦的机票”,“播放我最喜欢的音乐”
  • 实体识别: “今天在旧金山的天气”,“给我推荐一些关于莎士比亚的书”

生成输出

NLP 生成输出是指系统根据用户的查询或其他输入,生成自然语言文本作为回应。生成输出的过程涉及多个步骤,包括理解输入、生成内容和格式化输出。

以下是一些 NLP 生成输出的示例:

  • 摘要生成: 从一篇长文章中生成摘要
  • 机器翻译: 将一种语言的文本翻译成另一种语言
  • 文本生成: 根据给定的主题或提示生成文章、故事或对话
  • 对话生成: 创建与用户的交互式对话

NLP 查询与生成输出的流程

NLP 查询与生成输出的流程通常包括以下几个步骤:

  1. 输入: 用户输入查询或请求。
  2. 预处理: 对输入进行预处理,例如分词、词性标注、命名实体识别等。
  3. 理解: 使用 NLP 技术理解输入的含义,包括意图识别、实体识别和语义分析。
  4. 生成: 根据理解的结果,生成相应的输出。
  5. 后处理: 对生成的输出进行后处理,例如格式化、润色等。
  6. 输出: 将生成的输出呈现给用户。

NLP 查询与生成输出的应用

NLP 查询与生成输出技术在许多领域都有广泛的应用,例如:

  • 搜索引擎: 理解用户查询,提供相关的搜索结果。
  • 聊天机器人: 与用户进行对话,提供信息或解决问题。
  • 智能助手: 接收用户指令,执行相应的操作。
  • 内容生成: 自动生成文章、报告或其他文本内容。
  • 机器翻译: 将文本从一种语言翻译成另一种语言。

NLP 查询与生成输出的挑战

NLP 查询与生成输出技术面临许多挑战,例如:

  • 语言的复杂性: 自然语言具有复杂的语法、语义和语用规则,给理解和生成带来困难。
  • 数据的可用性: NLP 模型需要大量的训练数据,但高质量的数据往往难以获取。
  • 模型的泛化能力: NLP 模型需要能够处理各种不同的输入,但泛化能力往往受到限制。
  • 伦理问题: NLP 技术可能被用于生成虚假信息或恶意内容,需要关注伦理问题。

总结

NLP 查询与生成输出是自然语言处理领域的重要组成部分,它们在许多应用中发挥着关键作用。虽然 NLP 技术面临许多挑战,但随着技术的不断发展,我们有理由相信 NLP 将在未来发挥更大的作用。

### 场景 2:Web 搜索和最终答案

```python
search_query = "current stock price of Microsoft (MSFT) in USD"
  search_results = web_search(query=search_query)
  print(search_results)

执行日志:

搜索结果

Out: None

[Step 3: Duration 3.33 seconds| Input tokens: 18,430 | Output tokens: 2,240]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 4 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

─ Executing this code: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

final_answer("408.43")

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Out - Final answer: 408.43

[Step 4: Duration 2.15 seconds| Input tokens: 27,058 | Output tokens: 2,494]

408.43

场景 3:使用提示生成照片

使用了 Code Agent 和 image_generation_tool 我们从 HuggingFace Spaces 导入了一个工具,并用它来生成图像。简单而强大。

from smolagents import CodeAgent,OpenAIServerModel, Tool
api_key = # Replace with your secret name
### Specify the model, which will leverage the api_key we just got
model=OpenAIServerModel(
            model_id="gemini-2.0-flash-exp",
            api_base="https://generativelanguage.googleapis.com/v1beta/openai/",
            api_key=api_key,
            temperature=0.7
        )
image_generation_tool = Tool.from_space(
    "black-forest-labs/FLUX.1-schnell",
    name="image_generator",
    description="Generate an image from a prompt",
    token="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"
)
image_generation_tool("A sunny beach")
model =model
agent = CodeAgent(tools=[image_generation_tool], model=model)
agent.run(
    "Improve this prompt, then generate an image of it. prompt='smolagents by huggingface'"
)

输出:

通过这个,你了解了如何 使用 Hugging Face 的 SmolAgents 通过示例创建 AI Agent

要深入了解该框架,请查看官方 https://github.com/huggingface/smolagents


### 拥抱 AI 的未来

#### 探索人工智能

人工智能 (AI) 正在迅速改变我们的世界。从自动驾驶汽车到虚拟助手,AI 正在渗透到我们生活的方方面面。本文将深入探讨 AI 的各个方面,包括其定义、类型、应用和未来前景。

#### 什么是人工智能?

人工智能是指机器,特别是计算机系统,执行通常需要人类智能的任务的能力。这些任务包括学习、推理、解决问题、感知和理解语言。

#### AI 的类型

AI 可以根据其能力和复杂性进行分类。以下是 AI 的一些主要类型:

*   **弱人工智能 (Weak AI)**:也被称为**狭义人工智能**,是指设计用于执行特定任务的 AI。例如,推荐系统或语音助手。
*   **强人工智能 (Strong AI)**:也被称为**通用人工智能**,是指具有与人类相同或更高智能水平的 AI。这种 AI 能够理解、学习、适应和应用其知识来解决各种问题。
*   **超级人工智能 (Super AI)**:是指超越人类智能的假设 AI。这种 AI 能够进行创新、解决问题和做出超出人类理解范围的决策。

#### AI 的应用

AI 已经在各个行业中得到了广泛的应用。以下是一些例子:

*   **医疗保健**:AI 用于疾病诊断、药物研发和个性化治疗。
*   **金融**:AI 用于欺诈检测、算法交易和客户服务。
*   **零售**:AI 用于推荐系统、库存管理和客户分析。
*   **交通**:AI 用于自动驾驶汽车、交通管理和物流优化。
*   **教育**:AI 用于个性化学习、自动评分和教育内容生成。

#### AI 的优势

AI 提供了许多优势,包括:

*   **提高效率**:AI 可以自动化重复性任务,从而提高生产力和效率。
*   **增强决策**:AI 可以分析大量数据,提供见解并支持更明智的决策。
*   **改善客户体验**:AI 可以个性化服务,提供 24/7 的客户支持。
*   **推动创新**:AI 可以加速创新,促进新产品和服务的开发。

#### AI 的挑战

尽管 AI 具有诸多优势,但也面临着一些挑战:

*   **数据隐私**:AI 依赖于大量数据,这引发了对数据隐私和安全的担忧。
*   **偏见**:AI 算法可能受到训练数据的偏见影响,导致不公平或歧视性的结果。
*   **失业**:AI 自动化可能导致某些行业的失业。
*   **伦理问题**:AI 引发了关于自主武器、算法透明度和责任的伦理问题。

#### AI 的未来

AI 的未来充满潜力。随着技术的不断发展,我们可以期待 AI 在以下方面取得更大的进步:

*   **更智能的机器**:AI 将变得更加智能,能够执行更复杂的任务。
*   **更广泛的应用**:AI 将渗透到更多行业和领域。
*   **人机协作**:AI 将与人类更紧密地合作,增强人类的能力。
*   **伦理框架**:将制定伦理框架,以确保 AI 的负责任开发和部署。

#### 结论

人工智能是一项强大的技术,有可能改变我们的世界。通过了解 AI 的定义、类型、应用和挑战,我们可以为 AI 的未来做好准备。


Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...