AI Agent 开发综合指南

本文介绍了 ReAct 模式以改进功能,并演示了如何从头开始创建 AI 代理。它涵盖了测试、调试和优化 AI 代理,以及工具、库、环境设置和实施。本教程为用户提供了创建有效 AI 代理所需的技能,无论他们是开发人员还是爱好者。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、了解 AI 代理

AI 代理是自主管理的生物,它们使用传感器来监视环境、处理信息并实现预定义目标。它们可以是任何东西,从基本的机器人到可以随时间调整和学习的复杂系统。典型的例子包括 Netflix 和 Amazon 的推荐引擎、Siri 和 Alexa 等聊天机器人以及 Tesla 和 Waymo 的自动驾驶汽车。

这些代理在许多领域也至关重要:UiPath 和 Blue Prism 是机器人流程自动化 (RPA) 程序的示例,它们可以自动执行重复过程。DeepMind 和 IBM Watson Health 是医疗诊断系统的示例,它们有助于诊断疾病并推荐治疗方法。在其领域,AI 代理极大地提高了生产力、精确度和定制化。

为什么 AI 代理很重要?

这些代理在改善我们的日常生活和实现特定目标方面发挥着关键作用。

AI 代理之所以重要,是因为它们可以:

  • 降低完成日常操作所需的人力,从而提高产量和效率。
  • 分析大量数据以提供支持决策的结论和建议。
  • 利用聊天机器人和虚拟助手提供个性化的互动和帮助。
  • 在银行、交通和医疗保健等行业中实现复杂的应用。

从本质上讲,AI代理是推动下一波技术进步的关键,使系统更智能、更能响应用户需求。

AI代理在各个行业都有广泛的应用。以下是一些值得注意的用例:

  • 客户服务:聊天机器人和虚拟助手形式的人工智能代理处理客户查询、解决问题并提供个性化支持。他们可以全天候运营,提供一致而高效的服务。
  • 金融:金融预测、算法交易和欺诈检测是人工智能代理的应用。他们根据市场趋势进行交易,检查交易数据并发现可疑模式。
  • 医疗保健:人工智能代理协助诊断疾病、推荐治疗方法和监测患者健康状况。它们分析医疗数据、提供见解并支持临床决策。
  • 营销:AI 代理个性化营销活动、细分受众并优化广告支出。它们分析客户数据、预测行为并根据个人喜好定制内容。
  • 供应链管理:AI 系统估计需求、提高库存水平并简化物流。它们检查来自制造商、供应商和零售商的信息以确保运营顺利进行。

2、ReAct 模式简介

ReAct 模式以思考、行动、暂停、观察、回答的循环方式运行。

此循环允许 AI 代理推理输入,利用外部资源对其采取行动,然后将结果重新整合到其推理过程中。通过这样做,AI 代理可以提供更准确、更符合上下文的响应,从而显著扩展其实用性。

ReAct 模式是一种强大的设计模式,它结合了推理和行动技能来提高 AI 代理的能力。GPT-3 或 GPT-4 等 LLM 从这种技术中受益匪浅,因为它允许它们与其他工具和 API 交互,以执行超出其原始编程的活动。

ReAct 模式以循环方式运行,包括以下步骤:

  • 思考:AI 代理处理输入并推理需要做什么。这涉及理解问题或命令并确定要采取的适当行动。
  • 行动:根据推理,代理执行预定义的操作。这可能涉及搜索信息、执行计算或与外部 API 交互。
  • 暂停:代理等待操作完成。这是代理暂停以接收所执行操作的结果的关键步骤。
  • 观察:代理观察操作的结果。它分析从操作收到的输出以了解获得的信息或结果。
  • 答案:代理使用观察到的结果来生成响应。然后将此响应提供给用户,完成循环。

ReAct 模式之所以重要,有几个原因:

  • 增强功能:通过集成外部操作,AI 代理可以执行需要特定信息或计算的任务,从而增强其整体功能。
  • 提高准确性:该模式允许 AI 代理获取实时信息并执行准确计算,从而获得更精确、更相关的响应。
  • 灵活性:ReAct 模式使 AI 代理更加灵活,能够适应各种任务。它们可以与不同的 API 和工具交互,以执行各种操作。
  • 可扩展性:此模式允许随着时间的推移添加新的操作和功能,使 AI 代理可扩展且面向未来。
  • 现实世界的应用程序:ReAct 模式使 AI 代理能够部署在现实世界场景中,在这些场景中,它们可以与动态环境交互并提供有价值的见解和帮助。

3、所需工具和库

Python 是一种多功能且功能强大的编程语言,由于其简单性和广泛的库支持,在 AI 和机器学习中得到广泛使用。对于构建 AI 代理,几个 Python 库必不可少:

  • OpenAI API:此库允许您与 OpenAI 的语言模型(例如 GPT-3 和 GPT-4)进行交互。它提供了生成文本、回答问题和执行各种语言相关任务所需的功能。
  • httpx:这是一个功能强大的 Python HTTP 客户端,支持异步请求。它用于与外部 API 交互、获取数据和执行 Web 搜索。
  • re(正则表达式):此模块提供对 Python 中正则表达式的支持。它用于解析和匹配字符串中的模式,这对于处理 AI 代理的响应很有用。

OpenAI API 是一个强大的平台,可用于访问 OpenAI 开发的高级语言模型。这些模型可以理解和生成类似人类的文本,使其成为构建 AI 代理的理想选择。使用 OpenAI API,你可以:

  • 根据提示生成文本
  • 回答问题
  • 执行语言翻译
  • 总结文本
  • 还有更多

httpx 库是一个支持同步和异步请求的 Python HTTP 客户端。它旨在易于使用,同时提供用于发出 Web 请求的强大功能。使用 httpx,你可以:

  • 发送 GET 和 POST 请求
  • 处理 JSON 响应
  • 管理会话和 cookie
  • 执行异步请求以获得更好的性能

OpenAI API 和 httpx 库共同提供了构建和增强 AI 代理所需的基础工具,使它们能够与外部资源交互并执行各种操作。

4、设置开发环境

现在让我们按照以下步骤设置环境:

4.1 安装所需的库

要开始构建 AI 代理,你需要安装必要的库。以下是设置环境的步骤:

  • 安装 Python:确保您的系统上安装了 Python。您可以从 Python 官方网站下载它:
  • 设置虚拟环境:为您的项目创建虚拟环境来管理依赖项是一种很好的做法。运行以下命令设置虚拟环境:
python -m venv ai_agent_env
source ai_agent_env/bin/activate  # On Windows, use `ai_agent_env\Scripts\activate`
  • 安装 OpenAI API 和 httpx:使用 pip 安装所需的库:
pip install openai httpx
  • 安装其他库:你可能还需要其他库,例如用于正则表达式的 re,它包含在 Python 标准库中,因此无需单独安装。

4.2 设置 API 密钥和环境变量

要使用 OpenAI API,你需要一个 API 密钥。请按照以下步骤设置 API 密钥:

  • 获取 API 密钥:在 OpenAI 网站上注册一个帐户,并从 API 部分获取您的 API 密钥。
  • 设置环境变量:将你的 API 密钥存储在环境变量中以确保其安全。将以下行添加到 .bashrc 或 .zshrc 文件中(或使用适合你的操作系统的方法):
export OPENAI_API_KEY='your_openai_api_key_here'
  • 在你的代码中访问 API 密钥:在你的 Python 代码中,可以使用 os 模块访问 API 密钥:
import os
openai.api_key = os.getenv('OPENAI_API_KEY')

设置好环境后,你现在可以开始构建 AI 代理了。

5、构建 AI 代理

现在让我们构建 AI 代理。

为了构建 AI 代理,我们将创建一个类来处理与 OpenAI API 的交互并管理推理和操作。以下是入门的基本结构:

import openai
import re
import httpxclass ChatBot:def __init__(self, system=""):self.system = systemself.messages = []if self.system:self.messages.append({"role": "system", "content": system})def __call__(self, message):self.messages.append({"role": "user", "content": message})result = self.execute()self.messages.append({"role": "assistant", "content": result})return resultdef execute(self):completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=self.messages)return completion.choices[0].message.content

此类使用可选的系统消息初始化 AI 代理并处理用户交互。 __call__ 方法接收用户消息并使用 OpenAI API 生成响应。

5.1 实现 ReAct 模式

要实现 ReAct 模式,我们需要定义思考、行动、暂停、观察和回答的循环。以下是我们如何将其纳入我们的 AI 代理:

定义提示:

prompt = """
You run in a loop of Thought, Action, PAUSE, Observation.
At the end of the loop you output an Answer.
Use Thought to describe your thoughts about the question you have been asked.
Use Action to run one of the actions available to you - then return PAUSE.
Observation will be the result of running those actions.Your available actions are:
calculate:
e.g. calculate: 4 * 7 / 3
Runs a calculation and returns the number - uses Python so be sure to use floating point
syntax if necessarywikipedia:
e.g. wikipedia: Django
Returns a summary from searching Wikipediasimon_blog_search:
e.g. simon_blog_search: Django
Search Simon's blog for that termExample session:
Question: What is the capital of France?
Thought: I should look up France on Wikipedia
Action: wikipedia: France
PAUSEYou will be called again with this:
Observation: France is a country. The capital is Paris.You then output:
Answer: The capital of France is Paris
""".strip()

定义查询函数:

action_re = re.compile('^Action: (\w+): (.*)

查询函数通过将问题发送给 AI 代理、解析动作、执行动作并将观察结果反馈回循环来运行 ReAct 循环。

5.2、实现动作

现在让我们来看看操作的实现。

动作:维基百科搜索

维基百科搜索操作允许 AI 代理在维基百科上搜索信息。以下是实现方法:

def wikipedia(q):response = httpx.get("https://en.wikipedia.org/w/api.php", params={"action": "query","list": "search","srsearch": q,"format": "json"})return response.json()["query"]["search"][0]["snippet"]
动作:博客搜索

博客搜索操作允许 AI 代理搜索特定博客的信息。具体实现方法如下:

def simon_blog_search(q):response = httpx.get("https://datasette.simonwillison.net/simonwillisonblog.json", params={"sql": """selectblog_entry.title || ': ' || substr(html_strip_tags(blog_entry.body), 0, 1000) as text,blog_entry.createdfromblog_entry join blog_entry_fts on blog_entry.rowid = blog_entry_fts.rowidwhereblog_entry_fts match escape_fts(:q)order byblog_entry_fts.ranklimit1""".strip(),"_shape": "array","q": q,})return response.json()[0]["text"]
动作:计算

计算动作允许 AI 代理执行数学计算。具体实现方法如下:

def calculate(what):return eval(what)

5.3 向 AI 代理添加操作

接下来,我们需要在字典中注册这些操作,以便 AI 代理可以使用它们:

def query(question, max_turns=5):i = 0bot = ChatBot(prompt)next_prompt = questionwhile i < max_turns:i += 1result = bot(next_prompt)print(result)actions = [action_re.match(a) for a in result.split('\n') if action_re.match(a)]if actions:action, action_input = actions[0].groups()if action not in known_actions:raise Exception(f"Unknown action: {action}: {action_input}")print(" -- running {} {}".format(action, action_input))observation = known_actions[action](action_input)print("Observation:", observation)next_prompt = f"Observation: {observation}"else:return result

通过此设置,AI 代理可以推理输入、执行操作、观察结果并生成响应。

6、测试和调试

现在让我们按照测试和调试的步骤进行操作。

6.1 运行示例查询

要测试 AI 代理,你可以运行示例查询并观察结果。以下是几个示例:

print(query("What does England share borders with?"))

print(query("Has Simon been to Madagascar?"))

print(query("Fifteen * twenty five"))

6.2 调试常见问题

测试时,你可能会遇到一些常见问题。以下是一些调试技巧:

  • API 错误:确保你的 API 密钥设置正确并具有必要的权限。
  • 网络问题:检查你的互联网连接并确保你正在调用的端点可访问。
  • 输出不正确:验证操作函数中的逻辑并确保它们返回正确的结果。
  • 未处理的操作:确保在 known_actions 字典中定义所有可能的操作。

7、改进 AI 代理

现在让我们改进 AI 代理。

为了让 AI 代理更加稳健和安全:

  • 验证输入:确保所有输入都经过正确验证以防止注入攻击,尤其是在计算函数中。
  • 错误处理:在操作函数中实现错误处理以优雅地管理异常。
  • 日志记录:添加日志记录以跟踪代理的操作和观察结果,以便于调试。

为了增强 AI 代理的功能,你可以添加更多操作,例如:

  • 天气信息:与天气 API 集成以获取实时天气数据。
  • 新闻搜索:实施新闻搜索操作以获取最新新闻文章。
  • 翻译:使用翻译 API 添加翻译操作以支持多语言查询。

8、结束语

在本综合指南中,我们探讨了 AI 代理的概念、其重要性以及增强其功能的 ReAct 模式。我们介绍了必要的工具和库,设置了环境,并逐步完成了从头开始构建 AI 代理的过程。我们还讨论了实施操作、将其与 AI 代理集成以及测试和调试系统。最后,我们研究了 AI 代理的实际应用和未来前景。

通过遵循本指南,你现在掌握了从头开始创建自己的 AI 代理的知识。尝试不同的操作,增强代理的功能,并探索令人兴奋的人工智能领域的新可能性。


原文链接:AI Agent综合指南 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】01.Linux 的常见指令

1. ls 指令 语法&#xff1a;ls [选项] [目录名或文件名] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息 常用选项&#xff1a; -a&#xff1a;列出当前目录下的所有文件&#xff0c;包含隐藏文件…

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起&#xff0c;这些库的受欢迎程度呈指数级增长。 在这篇文章中&#xff0c;我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…

开始Linux之路

人生得一知己足矣&#xff0c;斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…

记录自己Ubuntu加Nvidia驱动从入门到入土的一天

前言 记录一下自己这波澜壮阔的一天&#xff0c;遇到了很多问题&#xff0c;解决了很多问题&#xff0c;但是还有很多问题&#xff0c;终于在晚上的零点彻底放弃&#xff0c;重启windows。 安装乌班图 1.安装虚拟机 我开始什么操作系统的基础都没有&#xff0c;网上随便搜了…

JDBC基础 -获取连接的方式、结果集、批处理、事务处理、连接池、Apache-DBUtils

文章目录 概述快速入门(增删改)获取数据库的五种方式方式一&#xff1a;获取Driver实现类对象方式二&#xff1a;反射方式三&#xff1a;使用DriverManager代替Driver方式四&#xff1a;Class.forName自动完成注册驱动&#xff08;推荐&#xff09;方式五&#xff1a;使用prope…

请你谈谈:BeanDefinition类作为Spring Bean的建模对象,与BeanFactoryPostProcessor之间的羁绊

那么&#xff0c;我们如何理解Spring Bean的建模对象呢&#xff1f;简而言之&#xff0c;它是指用于描述和配置Bean实例化过程的模型对象。有人可能会提出疑问&#xff0c;既然只需要Class&#xff08;类&#xff09;就可以实例化一个对象&#xff0c;Class作为类的元数据&…

springboot websocket 知识点汇总

以下是一个详细全面的 Spring Boot 使用 WebSocket 的知识点汇总 1. 配置 WebSocket 添加依赖 进入maven官网, 搜索spring-boot-starter-websocket&#xff0c;选择版本, 然后把依赖复制到pom.xml的dependencies标签中 配置 WebSocket 创建一个配置类 WebSocketConfig&…

mysql不初始化升级

1、下载mysql&#xff0c;下载地址&#xff1a;MySQL :: Download MySQL Community Server 2、解压下载好的mysql&#xff0c;修改配置文件的datadir指定目录为当前数据存储的目录 3、通过管理员cmd进入新版本mysql的bin目录&#xff0c; 然后执行命令安装mysql服务&#xff…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(七)-通过无人机实现无线接入的独立部署

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

JVM:垃圾回收器

文章目录 一、介绍二、年轻代-Serial垃圾回收器三、老年代-SerialOld垃圾回收器四、年轻代-ParNew垃圾回收器五、老年代-CMS&#xff08;Concurrent Mark Sweep&#xff09;垃圾回收器六、年轻代-Parllel Scavenge垃圾回收器七、Parallel Old垃圾回收器八、G1垃圾回收器 一、介…

仅在少数市场发售?三星Galaxy Z Fold 6 Slim折叠屏手机更轻更薄

在智能手机的创新之路上&#xff0c;三星一直是行业的领跑者之一。随着Galaxy Z Fold系列的不断进化&#xff0c;三星再次突破技术边界&#xff0c;推出了更为轻薄的Galaxy Z Fold 6 Slim。 这款新型折叠屏手机以其独特的设计和卓越的性能&#xff0c;为用户带来了全新的使用体…

护眼台灯真的护眼吗?要注意学生如何正确使用台灯!

孩子们面临着越来越多的视力挑战&#xff0c;在近视学生中&#xff0c;近10%为高度近视&#xff0c;且占比随年级升高而增长。幼儿园6岁儿童中有1.5%为高度近视&#xff0c;而高中阶段则达到了17.6%。青少年是国家的未来和希望&#xff0c;而他们的视力健康却面临着前所未有的挑…

一篇讲清楚怎么选算力租赁平台

选择算力租赁平台时&#xff0c;需要考虑多个因素以确保找到最适合自己需求的服务。以下是一些关键点&#xff0c;可以帮助您做出明智的选择&#xff1a; 明确需求&#xff1a;首先&#xff0c;确定您的项目需要哪种类型的计算资源&#xff0c;比如CPU、GPU或FPGA&#xff0c;以…

Cadence23学习笔记(二)

原理图设计界面中就可以直接新建PCB: 亲测&#xff1a;需要画完原理图&#xff0c;并且DRC通过之后才可以&#xff01; 放置完元器件之后要规定元件的Footprint &#xff0c;注意PCB封装名要和库文件中的名字对应&#xff1a; DRC按钮&#xff1a; 点击图标 N, 生成第一网表&…

车载音视频MediaPlayer优化方案

媒体播放现状 从手机到车载&#xff0c;在很多地方还是有很大的不同。针对多媒体的场景Android车机目前大部分结构大致结构如下图&#xff1a; 从以上图看出的问题&#xff1a; 各个音视频APP单独实现播控界面&#xff0c;播放链路不一致&#xff0c;使用的底层播放器和音频焦…

基于Spring Boot的高校后勤餐饮管理系统

1 项目介绍 1.1 研究背景 “互联网”时代的到来&#xff0c;既给高校后勤管理发展带来了机遇&#xff0c;也带来了更大的挑战。信息化应用已经开始普及&#xff0c;传统的高校后勤餐饮管理模式往往存在着效率低下、信息不透明、资源浪费等问题&#xff0c;已经难以满足现代高…

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏 一、魔塔小游戏介绍1.1 魔塔小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apa…

STM32第十八课:SPIFlash

目录 需求一、SPI概要二、SPI配置1.开时钟2.配置IO3.配置&使能SPI 三、FLash操作函数1.SPI发送数据2.FLASH写使能3.FLASH等待操作完成4.FLASH页写操作5.FLASH读操作6.FLASH扇区擦除 四、需求实现 需求 通过SPI控制FLash进行数据的保存和删除。 一、SPI概要 在我们使用UA…

【python】OpenCV—European Article Number

参考学习来自&#xff1a;OpenCV基础&#xff08;25&#xff09;条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码&#xff08;European Article Number&#xff09;的缩写&#xff0c;是一种广泛使用的条形码标准&#xff0c;特别是在超级市场和其它零售业中。…

OpenCV解决验证码(数字和字母)识别(Python)

文章目录 前言一、准备验证码图片 前言 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库。它支持Windows、Linux、Mac OS、Android和iOS等多个操作系统&#xff0c;提供了丰富的图像处理和计算机视觉功能&#xff0c;包括但…