如何打造AI智能体?

如何打造AI智能体?
收藏者
0
被浏览
113

5 个回答

感情淡了就放盐 LV

发表于 2025-4-9 18:39:12

智能体(AI Agent)代表了人工智能领域中具备自主感知环境、分析决策并执行行动能力的实体。其核心特性包括自主性、多模态感知、工具调用能力和持续学习。智能体不需要人工干预即可完成复杂的任务。例如,用户发出“买咖啡”指令时,智能体可以自动进行选品、支付等操作。它们能够处理文本、图像、语音等各类数据输入,通过API与外部工具进行集成,并基于环境反馈不断优化策略。
在开发智能体的过程中,存在各种开源框架,各具特色。有的框架允许开发者集成多种大语言模型,使开发者可以在不同模型间动态进行切换。从低代码平台到可视化构建对话流程和工作流,这些框架为知识库管理和API扩展提供了强力支持,适用于智能客服、知识库问答和个性化助手等场景。
除了上述框架,还有一些代码开发框架支持智能体软件定制化开发,这些软件包提供了工具链集成、模块化设计,用以解决复杂业务流程的自动化。部分软件包支持多智能体之间的协作,用于处理分布式任务和进行代码生成。

如何打造AI智能体?-1.jpg


智能体的核心是大语言模型加知识库和工具调用,同时覆盖聊天助手和工作流等使用模式

智能体开发框架根据使用门槛和技术灵活性可分为低代码框架与代码开发框架两类,二者在功能定位、适用场景和开发模式上存在显著差异。
低代码框架,像Dify、FastGPT、OpenWebUI,具有可视化开发的核心特点,通过图形界面配置工作流、提示词和知识库,无需编写代码就能完成智能体构建。它还拥有内置工具链,集成了多模态模型支持、知识库管理、工具调用模块,可开箱即用。在部署方面十分快速,支持云端或本地容器化部署,企业级应用还能私有化运行以保障数据安全。低代码框架适用于各种标准化场景,如客服机器人、知识问答、内容生成等通用场景。从技术架构来看,各种框架采用模块化设计,支持多模型动态切换,本地大语言模型部署与在线云服务API混合调用,自定义知识库问答,基于工作流实现复杂逻辑编排。其适用场景包括中小型企业快速搭建智能客服、内部知识库,非技术用户构建个性化智能助手,以及需要快速验证业务原型的轻量化项目。
代码开发框架,如AutoGen、LangChain,核心特点在于灵活性与扩展性,提供Python软件开发包,开发者可通过编程自定义智能体逻辑、工具调用规则及多智能体协作机制。它支持复杂任务,适用于需深度定制的场景。代码开发框架具备深度集成和定制能力,可通过API与现有软件系统无缝对接,使用高级调试工具,提供中间过程监控、日志分析和性能优化模块。其适用场景主要是金融风控、医疗诊断等需要复杂逻辑推理的领域,开发团队构建企业级人工智能中台或自动化工作流,以及科研场景中的多模态任务处理。
对比两类框架的核心能力,在开发门槛上,低代码框架对非技术人员友好,以图形界面配置为主;代码开发框架则需要编程能力,适合开发者深度定制。灵活性方面,低代码框架受限于预置功能模块,扩展性有限;代码开发框架支持编程接口,可扩展性更强。部署效率上,低代码框架能快速上线,可快速复用标准化模板;代码开发框架需进行代码调试和集成测试,周期较长。对于复杂任务的支持,低代码框架适合简单任务流;代码开发框架支持多智能体协作、动态规划与迭代优化的复杂系统。在数据安全上,低代码框架有私有化部署选项;代码开发框架需自行实现安全策略。

如何打造AI智能体?-2.jpg


对比不同类型的智能体框架

我们以开源大语言模型智能体框架Dify社区版为例,介绍如何使用Docker Compose部署运行容器。在开始之前,请确保已经正确安装了Docker环境。另外,需要安装软件源代码版本管理工具Git(https://git-scm.com/downloads)。Git 是一款分布式版本控制系统,最初用于管理 Linux 内核的开发。它通过跟踪文件变化、记录历史版本和协调多人协作,成为现代软件开发中不可或缺的工具。我们使用Git从远程开源代码仓库拉取开源软件代码。
1. 拉取Dify源代码至本地环境
安装完成Git工具后,在命令行执行Git克隆命令。该命令将从远程代码仓库下载代码,并在本地磁盘的工作路径下创建名称为dify的文件夹,用来存储下载的代码库。
git clone https://github.com/langgenius/dify.git
2. 启动Dify容器
Dify源代码的docker子文件夹包含启动容器所需的配置文件。我们需要关注两个配置文件。(1)环境变量配置文件(.env)以键值对的形式存储软件设置,我们通常可以使用默认设置。(2)容器编排配置文件(docker-compose.yaml)描述了一组需要启动的容器,用于定义多容器应用。文件描述了每个容器运行的镜像,容器的环境变量配置、存储配置、网络端口配置以及相互间的依赖关系。容器引擎会把环境变量自动载入容器以确保软件配置正确,并按照容器编排配置文件所描述的编排模板下载镜像,根据依赖关系按照顺序启动各个容器,并配置容器的运行参数。
首先,我们进入docker子文件夹,执行下列命令从模板文件(.env.example)复制环境变量配置文件(.env)。
cd dify/docker
  copy .env.example .env
然后,我们使用docker命令行管理工具启动容器编排。
docker compose up -d
启动完成后,我们可以在Docker Desktop的图形化界面中查看运行情况。

如何打造AI智能体?-3.jpg


Docker Desktop中查看Dify平台容器运行情况

3. 首次访问Dify页面
我们可以通过本地网络的80端口访问Dify的Web界面。请注意,在启动容器前必须确保该端口没有被其他Web服务占用,否则容器将无法成功启动。
首次访问Dify,需要打开安装初始化页面(http://localhost/install),在该页面设置管理员账户的用户名(邮箱)和用户密码。用户名和密码将用于后续登录验证。设置完成后,可以打开Dify平台的主界面(http://localhost)。

如何打造AI智能体?-4.jpg


本地部署运行Dify社区版的主界面

我们以Ollama为例介绍如何配置接入本地部署运行的大语言模型。关于如何使用Ollama工具链在本地运行大语言模型进行推理生成,可以参考前面章节的具体介绍。
Dify平台的模型配置位于“用户菜单”中的“设置”(Settings)界面。我们可以在该界面管理“模型供应商”(Model Provider)。在这里我们可以查看已经添加的模型,以及所有可用的模型供应商,例如Ollama、通义千问、火山引擎等。

如何打造AI智能体?-5.jpg


模型供应商配置管理位于用户菜单下的设置界面

当我们选择Ollama模型,就可以接入部署在本地宿主机、本地容器、或者部署在远程服务器上的各种开源大语言模型。添加Ollama模型需要填写模型类型、模型名称、基础URL(Base URL)、补全模式(Completion mode)、上下文长度、最大词元(Token)上限、是否支持视觉多模态(Vision)、是否支持函数调用(或工具调用)等配置参数。
配置完成后,我们可以在“工作室(Studio)”面板选择“聊天助手(Chatbot)”模块,打开“创建空白应用(Create from Blank)”界面,创建一个聊天助手,选择新添加的模型,使用该模型进行对话。聊天助手发布之后,可以在“探索(Explore)”面板左侧的“工作区(Workspace)”列表中找到所有已经发布的聊天助手,进行更多对话,并查看管理对话历史记录。

如何打造AI智能体?-6.jpg


创建聊天助手并选择模型进行对话

此外,我们还可以配置知识库和工具调用来增强智能体的能力,提高回答问题的准确性和可靠性,提供参考信息来源,调用实时API获取最新信息,帮助用户执行各种操作。
插播广告:推荐一本书,适合从头入门机器学习,数学原理搭配丰富的Python代码实践:
《机器学习入门:数学原理解析及算法实践》(董政)【摘要 书评 试读】- 京东图书 (jd.com)
《机器学习入门:数学原理解析及算法实践》(董政 著)【简介_书评_在线阅读】 - 当当图书

devil0 LV

发表于 2025-4-9 18:53:12

翻译来源:
Building Effective AI Agents | Anthropic工程实践

在过去的一年里,我们与数十个团队合作,这些团队在各个行业中构建大型语言模型(LLM)智能体。最成功的实现并不是使用复杂的框架或专用库,而是使用简单、可组合的模式。
在这篇文章中,我们分享了从与客户合作和自己构建智能体中学到的经验,并为开发者提供构建有效智能体的实用建议。
什么是智能体?

“智能体”可以有多种定义。一些客户将智能体定义为完全自主的系统,能够在较长时间内独立运行,使用各种工具完成复杂任务。另一些客户则用这个词来描述更规定性的实现,遵循预定义的工作流程。在Anthropic,我们将所有这些变化归类为智能体系统,但在架构上对工作流智能体做了重要区分:

  • 工作流是通过预定义代码路径编排LLM和工具的系统。
  • 智能体则是LLM动态指导自身流程和工具使用的系统,对如何完成任务保持控制。
在下文中,我们将详细探讨这两种类型的智能体系统。在附录1(“智能体在实践中”)中,我们描述了两个客户在使用这些系统时发现特别有价值的领域。
何时(以及何时不)使用智能体

在使用LLM构建应用程序时,我们建议找到尽可能简单的解决方案,并且只有在需要时才增加复杂性。这可能意味着根本不构建智能体系统。智能体系统通常在任务性能上进行权衡,以换取更低的延迟和成本,你应该考虑这种权衡在何时有意义。
当需要更多复杂性时,工作流为定义良好的任务提供可预测性和一致性,而智能体则是在需要灵活性和模型驱动决策时的更好选择。然而,对于许多应用程序来说,通过检索和上下文示例优化单个LLM调用通常就足够了。
何时以及如何使用框架

有许多框架可以简化智能体系统的实现,包括:

  • LangChain的LangGraph;
  • Amazon Bedrock的AI智能体框架;
  • Rivet,一个拖放式GUI LLM工作流构建器;以及
  • Vellum,另一个用于构建和测试复杂工作流的GUI工具。
这些框架通过简化标准低级任务(如调用LLM、定义和解析工具以及链接调用)使入门变得容易。然而,它们通常会创建额外的抽象层,可能会使底层提示和响应变得模糊,从而更难调试。它们还可能诱使你增加复杂性,而一个更简单的设置就足够了。
我们建议开发者从直接使用LLM API开始:许多模式可以用几行代码实现。如果你确实使用了框架,确保你理解底层代码。对“黑盒”工作的错误假设是客户错误的常见来源。
构建模块、工作流和智能体

在本节中,我们将探讨我们在生产中看到的智能体系统的常见模式。我们将从我们的基础构建模块——增强型LLM开始,逐步增加复杂性,从简单的工作流到自主智能体。
构建模块:增强型LLM

智能体系统的基本构建模块是通过检索、工具和内存等增强功能强化的LLM。我们当前的模型可以主动使用这些能力——生成自己的搜索查询、选择合适的工具以及确定要保留的信息。


如何打造AI智能体?-1.jpg


增强型LLM

我们建议关注实现的两个关键方面:将这些能力针对你的具体用例进行定制,并确保它们为你的LLM提供一个简单、文档齐全的接口。虽然有许多方法可以实现这些增强功能,但一种方法是通过我们最近发布的模型上下文协议,该协议允许开发者通过简单的客户端实现与不断增长的第三方工具生态系统进行集成。
在本文的其余部分中,我们将假设每个LLM调用都可以访问这些增强功能。
工作流:提示链式

提示链式将任务分解为一系列步骤,其中每个LLM调用处理前一个步骤的输出。你可以在任何中间步骤添加程序化检查(见下图中的“门”),以确保流程仍在正轨上。


如何打造AI智能体?-2.jpg


提示链式工作流

何时使用此工作流: 当任务可以轻松且干净地分解为固定子任务时,此工作流最为理想。主要目标是通过使每个LLM调用变得更简单任务来换取更高的准确性,从而降低延迟。
提示链式有用的示例:

  • 生成营销文案,然后将其翻译成另一种语言。
  • 撰写文档大纲,检查大纲是否符合某些标准,然后根据大纲撰写文档。
工作流:路由

路由对输入进行分类,并将其引导至专门的后续任务。此工作流允许分离关注点,并构建更专业化的提示。如果没有此工作流,针对一种输入进行优化可能会损害其他输入的性能。


如何打造AI智能体?-3.jpg


路由工作流

何时使用此工作流: 当任务复杂且有不同类别需要分别处理时,路由效果最佳,且分类可以通过LLM或更传统的分类模型/算法准确处理。
路由有用的示例:

  • 将不同类型的客户服务查询(一般问题、退款请求、技术支持)引导至不同的下游流程、提示和工具。
  • 将简单/常见问题路由至较小的模型(如 Claude 3.5 Haiku),将困难/不寻常问题路由至更强大的模型(如 Claude 3.5 Sonnet),以优化成本和速度。
工作流:并行化

LLM有时可以同时处理任务,并通过程序化方式聚合其输出。此工作流,即并行化,主要表现为两种变化:

  • 分段:将任务分解为独立的子任务并行运行。
  • 投票:多次运行同一任务以获得多样化的输出。


如何打造AI智能体?-4.jpg


并行化工作流

何时使用此工作流: 当被分解的子任务可以并行化以提高速度,或者需要多种视角或尝试以获得更高置信度的结果时,此工作流效果最佳。对于具有多个考虑因素的复杂任务,LLM通常在每个考虑因素由单独的LLM调用处理时表现更好,从而能够专注于每个具体方面。
并行化有用的示例:

  • 分段
  • 实现护栏,其中一个模型实例处理用户查询,而另一个筛选不适当内容或请求。这通常比让同一个LLM调用同时处理护栏和核心响应效果更好。
  • 自动化评估,以评估LLM性能,每个LLM调用评估给定提示下模型性能的不同方面。
  • 投票
  • 审查代码以查找漏洞,多个不同的提示审查并标记代码。
  • 评估某段内容是否不适当,多个提示从不同方面评估或需要不同的投票阈值以平衡误报和漏报。
工作流:编排器-工作者

在编排器-工作者工作流中,一个中心LLM动态分解任务,将其委派给工作者LLM,并综合其结果。


如何打造AI智能体?-5.jpg


编排器-工作者工作流

何时使用此工作流: 此工作流非常适合复杂任务,你无法预先确定所需的子任务(例如,在编码中,需要更改的文件数量和每个文件的更改性质可能取决于任务)。这与并行化的拓扑结构相似,但关键区别在于其灵活性——子任务不是预先定义的,而是由编排器根据具体输入确定。
编排器-工作者有用的示例:

  • 每次对多个文件进行复杂更改的编码产品。
  • 搜索任务,涉及从多个来源收集和分析可能相关信息。
工作流:评估器-优化器

在评估器-优化器工作流中,一个LLM调用生成响应,而另一个在循环中提供评估和反馈。


如何打造AI智能体?-6.jpg


评估器-优化器工作流

何时使用此工作流: 当我们有明确的评估标准,并且迭代改进能带来可衡量的价值时,此工作流特别有效。两个良好匹配的标志是,首先,当人类表达反馈时,LLM响应可以明显改进;其次,LLM可以提供此类反馈。这类似于人类作家在撰写抛光文档时可能经历的迭代写作过程。
评估器-优化器有用的示例:

  • 文学翻译,其中存在细微差别,翻译LLM可能无法最初捕捉到,但评估LLM可以提供有用的批评。
  • 复杂搜索任务,需要多轮搜索和分析以收集全面信息,评估器决定是否需要进一步搜索。
智能体

随着LLM在关键能力上的成熟——理解复杂输入、进行推理和规划、可靠使用工具以及从错误中恢复——智能体正在生产中崭露头角。智能体从人类用户的命令或交互式讨论开始。一旦任务明确,智能体独立计划和操作,可能返回向人类获取更多信息或判断。在执行过程中,智能体必须在每一步从环境中获取“真实情况”(例如工具调用结果或代码执行)以评估其进展。然后,智能体可以在检查点或遇到障碍时暂停以获取人类反馈。任务通常在完成后终止,但包含停止条件(例如最大迭代次数)以保持控制也很常见。
智能体可以处理复杂任务,但其实现通常很简单。它们通常是LLM根据环境反馈在循环中使用工具。因此,清晰且深思熟虑地设计工具集及其文档至关重要。我们在附录2(“提示工程你的工具”)中扩展了工具开发的最佳实践。
自主智能体
何时使用智能体: 智能体可用于开放性问题,难以或无法预测所需步骤,且无法硬编码固定路径。LLM可能会运行多个回合,你必须对其决策能力有一定的信任。智能体的自主性使其成为在受信环境中扩展任务的理想选择。
智能体的自主性意味着更高的成本,以及错误累积的潜力。我们建议在沙盒环境中进行广泛测试,并设置适当的安全措施。
智能体有用的示例:

  • 用于解决SWE-bench任务的编码智能体,这些任务涉及根据任务描述对多个文件进行编辑;
  • 我们的“计算机使用”参考实现,其中Claude使用计算机完成任务。
编码智能体的高级流程
组合和自定义这些模式

这些构建模块不是规定性的。它们是开发者可以塑造和组合以适应不同用例的常见模式。与任何LLM功能一样,成功的关键在于衡量性能并迭代实现。重复一遍:只有当更简单的解决方案不足时,才考虑增加复杂性。
总结

在LLM领域取得成功的关键不在于构建最复杂的系统,而在于构建满足需求的正确系统。从简单提示开始,通过全面评估进行优化,并且只有在更简单的解决方案不足时才添加多步智能体系统。
在实现智能体时,我们努力遵循三个核心原则:

  • 保持智能体设计的简洁性
  • 通过明确显示智能体的规划步骤来优先考虑透明度
  • 通过彻底的工具文档和测试来精心设计智能体-计算机接口(ACI)。
框架可以帮助你快速入门,但在进入生产环境时,不要犹豫减少抽象层并使用基本组件构建。通过遵循这些原则,你可以创建不仅强大而且可靠、可维护并受用户信任的智能体。
致谢

由Erik Schluntz和Barry Zhang撰写。这项工作基于我们在Anthropic构建智能体的经验以及客户分享的宝贵见解,在此深表感谢。
附录1:智能体在实践中

我们与客户合作的经验揭示了两个特别有前景的AI智能体应用领域,展示了上述模式的实际价值。这两个应用说明了智能体在需要对话和行动、有明确成功标准、能够实现反馈循环以及整合有意义的人类监督的任务中增加了最大价值。
A. 客户支持

客户支持通过工具集成将熟悉的聊天机器人界面与增强功能相结合。这是更开放智能体的自然契合,因为:

  • 支持交互自然遵循对话流程,同时需要访问外部信息和行动;
  • 可以集成工具以提取客户数据、订单历史和知识库文章;
  • 诸如退款或更新工单等行动可以程序化处理;以及
  • 可以通过用户定义的解决方案明确衡量成功。
几家公司通过基于使用的定价模型展示了这种方法的可行性,仅对成功解决方案收费,这表明对智能体有效性的信心。
B. 编码智能体

软件开发领域在LLM功能方面显示出显著潜力,从代码补全发展到自主问题解决。智能体特别有效,因为:

  • 代码解决方案可以通过自动化测试进行验证;
  • 智能体可以使用测试结果作为反馈迭代解决方案;
  • 问题空间是明确定义和结构化的;以及
  • 输出质量可以客观衡量。
在我们自己的实现中,智能体现在可以根据拉取请求描述在SWE-bench Verified基准中解决实际GitHub问题。然而,虽然自动化测试有助于验证功能,但人类审查对于确保解决方案符合更广泛的系统要求仍然至关重要。
附录2:提示工程你的工具

无论你构建哪种智能体系统,工具可能都是智能体的重要组成部分。工具使Claude能够通过在我们的API中指定其确切结构和定义来与外部服务和API交互。当Claude响应时,如果它计划调用工具,将在API响应中包含一个工具使用块。工具定义和规范应与整体提示一样受到提示工程的关注。在此简短的附录中,我们描述了如何提示工程你的工具。
通常有多种方法可以指定同一操作。例如,可以通过编写差异或重写整个文件来指定文件编辑。对于结构化输出,可以将代码放在Markdown或JSON中。在软件工程中,这些差异是表面的,可以从一种转换为另一种而不会丢失信息。然而,某些格式比其他格式更难让LLM编写。编写差异需要在编写新代码之前知道块标题中有多少行需要更改。将代码写入JSON(与Markdown相比)需要对换行符和引号进行额外的转义。
我们对决定工具格式的建议如下:

  • 给模型足够的tokens来“思考”,以免它把自己逼入绝境。
  • 保持格式接近模型在互联网上自然看到的文本。
  • 确保没有格式“开销”,例如需要准确计数数千行代码,或对模型编写的任何代码进行字符串转义。
一个经验法则是思考在人机交互(HCI)中投入了多少精力,并计划在创建良好的智能体-计算机接口(ACI)上投入同样多的精力。以下是一些如何做到这一点的想法:

  • 设身处地为模型着想。根据描述和参数,使用此工具的方法是否显而易见,还是需要仔细思考?如果是后者,那么模型可能也是如此。一个好的工具定义通常包括示例用法、边缘情况、输入格式要求以及与其他工具的明确界限。
  • 如何更改参数名称或描述以使事情更明显?将其视为为你团队中的初级开发人员编写一个很棒的docstring。当使用许多相似工具时,这一点尤为重要。
  • 测试模型如何使用你的工具:在我们的工作台中运行许多示例输入,查看模型犯了哪些错误,并进行迭代。
  • 对工具进行防错设计。更改参数,使其更难犯错。
在构建我们的SWE-bench智能体时,我们实际上在优化工具上花费的时间比在整体提示上更多。例如,我们发现模型在使用相对文件路径时会犯错,尤其是在智能体离开根目录后。为了解决这个问题,我们更改了工具,使其始终需要绝对文件路径——我们发现模型使用这种方法非常完美。

baiyuting LV

发表于 2025-4-9 19:04:47

在之前的文章里,我们详细介绍了 AI 智能体,聊了聊它们的特点、组成部分、发展历程、遇到的挑战以及未来的可能性。
在这篇文章里,我们要一起用 Python 从零开始做一个智能体。这个智能体能根据你输入的信息做决定,选择合适的工具,然后执行任务。让我们开始吧!
1. 什么是智能体?

智能体就像一个独立的小家伙,它能感知周围的环境,自己做决定,然后采取行动来实现特定的目标。智能体可以很简单,也可以很复杂。简单的就像那种只会对刺激做出反应的“反应型智能体”,复杂的就像那种能不断学习和适应的“智能智能体”。常见的智能体类型包括:

  • 反应型智能体(Reactive Agents): 直接对环境变化做出反应,没有记忆。
  • 基于模型的智能体(Model-Based Agents): 使用内部的世界模型来做决策。
  • 基于目标的智能体(Goal-Based Agents): 根据要实现的目标来规划行动。
  • 基于效用的智能体(Utility-Based Agents): 通过评估不同行动的“价值”来选择最佳方案。
像聊天机器人、推荐系统、自动驾驶汽车,它们都用了不同类型的智能体来高效、智能地完成任务。
我们这个智能体的核心组成部分是:

  • 模型: 智能体的大脑,负责处理输入的信息并生成回应。
  • 工具: 预先定义好的一些功能,智能体可以根据你的请求来执行这些功能。
  • 工具箱: 智能体拥有的所有工具的集合。
  • 系统提示: 一组指令,告诉智能体如何处理你的输入,并选择合适的工具。
2. 动手实现

好啦,让我们挽起袖子开始干活吧!

如何打造AI智能体?-1.jpg

构建智能体
2.1 准备工作
在运行代码之前,请确保你的电脑满足以下条件:

  • Python 环境设置
    你需要安装 Python 才能运行 AI 智能体。按照以下步骤设置你的环境:


  • 安装 Python(如果还没安装的话)

    • 从 python.org 下载并安装 Python(推荐 3.8 或更高版本)。
    • 验证安装:

  1. python --version
复制代码


    • 创建虚拟环境(推荐)最好使用虚拟环境来管理依赖:

  1. python -m venv ai_agents_env     
  2. source ai_agents_env/bin/activate  # Windows 上:ai_agents_env\Scripts\activate
复制代码

  • 本地设置 Ollama
    Ollama 用于高效地运行和管理本地语言模型。按照以下步骤安装和配置:


  • 下载并安装 Ollama

    • 访问 Ollama 官网 并下载适用于你的操作系统的安装程序。(请替换为实际链接)
    • 按照你的操作系统平台的说明进行安装。

  • 验证 Ollama 安装

    • 运行以下命令来检查 Ollama 是否正确安装:

  1. ollama --version
复制代码


    • 拉取模型(如果需要)

      • 某些智能体实现可能需要特定的模型。你可以使用以下命令拉取模型:


  1. ollama pull mistral  # 将 'mistral' 替换为你需要的模型
复制代码
2.2 实现步骤

如何打造AI智能体?-2.jpg

第一步:设置环境
除了 Python,我们还需要安装一些必要的库。在这个教程中,我们将使用 requests、json 和 termcolor。此外,我们将使用 dotenv 来管理环境变量。
  1. pip install requests termcolor python-dotenv
复制代码
第二步:定义模型类
我们首先需要一个模型来处理用户的输入。我们将创建一个 OllamaModel 类,它与本地 API 交互以生成响应。
这是一个基本的实现:
  1. from termcolor import colored
  2. import os
  3. from dotenv import load_dotenv
  4. load_dotenv()
  5. import requests
  6. import json
  7. import operator
  8. class OllamaModel:
  9.     def __init__(self, model, system_prompt, temperature=0, stop=None):
  10.         """
  11.         用给定的参数初始化 OllamaModel。
  12.         参数:
  13.         model (str): 要使用的模型的名称。
  14.         system_prompt (str): 要使用的系统提示。
  15.         temperature (float): 模型的温度设置。
  16.         stop (str): 模型的停止标记。
  17.         """
  18.         self.model_endpoint = "http://localhost:11434/api/generate"
  19.         self.temperature = temperature
  20.         self.model = model
  21.         self.system_prompt = system_prompt
  22.         self.headers = {"Content-Type": "application/json"}
  23.         self.stop = stop
  24.     def generate_text(self, prompt):
  25.         """
  26.         根据提供的提示从 Ollama 模型生成响应。
  27.         参数:
  28.         prompt (str): 用于生成响应的用户查询。
  29.         返回:
  30.         dict: 模型的响应,以字典形式返回。
  31.         """
  32.         payload = {
  33.             "model": self.model,
  34.             "format": "json",
  35.             "prompt": prompt,
  36.             "system": self.system_prompt,
  37.             "stream": False,
  38.             "temperature": self.temperature,
  39.             "stop": self.stop
  40.         }
  41.         try:
  42.             request_response = requests.post(
  43.                 self.model_endpoint,
  44.                 headers=self.headers,
  45.                 data=json.dumps(payload)
  46.             )
  47.             print("请求响应", request_response)
  48.             request_response_json = request_response.json()
  49.             response = request_response_json['response']
  50.             response_dict = json.loads(response)
  51.             print(f"\n\n来自 Ollama 模型的响应: {response_dict}")
  52.             return response_dict
  53.         except requests.RequestException as e:
  54.             response = {"error": f"调用模型时出错!{str(e)}"}
  55.             return response
复制代码
这个类用模型的名称、系统提示、温度和停止标记进行初始化。generate_text 方法向模型 API 发送请求并返回响应。
第三步:为智能体创建工具
下一步是创建我们的智能体可以使用的工具。这些工具是执行特定任务的简单 Python 函数。这是一个基本计算器和字符串反转器的示例:
  1. def basic_calculator(input_str):
  2.     """
  3.     根据输入的字符串或字典对两个数字执行数值运算。
  4.     参数:
  5.     input_str (str 或 dict): 表示字典的 JSON 字符串,包含键 'num1'、'num2' 和 'operation',
  6.                             或者直接是一个字典。例如:'{"num1": 5, "num2": 3, "operation": "add"}'
  7.                             或 {"num1": 67869, "num2": 9030393, "operation": "divide"}
  8.     返回:
  9.     str: 运算结果的格式化字符串。
  10.     抛出:
  11.     Exception: 如果在运算过程中发生错误(例如,除以零)。
  12.     ValueError: 如果请求了不支持的运算或输入无效。
  13.     """
  14.     try:
  15.         # 同时处理字典和字符串输入
  16.         if isinstance(input_str, dict):
  17.             input_dict = input_str
  18.         else:
  19.             # 清理并解析输入字符串
  20.             input_str_clean = input_str.replace("'", "\"")
  21.             input_str_clean = input_str_clean.strip().strip("\"")
  22.             input_dict = json.loads(input_str_clean)
  23.         # 验证必需的字段
  24.         if not all(key in input_dict for key in ['num1', 'num2', 'operation']):
  25.             return "错误:输入必须包含 'num1'、'num2' 和 'operation'"
  26.         num1 = float(input_dict['num1'])  # 转换为浮点数以处理小数
  27.         num2 = float(input_dict['num2'])
  28.         operation = input_dict['operation'].lower()  # 不区分大小写
  29.     except (json.JSONDecodeError, KeyError) as e:
  30.         return "无效的输入格式。请提供有效的数字和运算。"
  31.     except ValueError as e:
  32.         return "错误:请提供有效的数值。"
  33.     # 定义支持的运算并进行错误处理
  34.     operations = {
  35.         'add': operator.add,
  36.         'plus': operator.add,  # add 的替代词
  37.         'subtract': operator.sub,
  38.         'minus': operator.sub,  # subtract 的替代词
  39.         'multiply': operator.mul,
  40.         'times': operator.mul,  # multiply 的替代词
  41.         'divide': operator.truediv,
  42.         'floor_divide': operator.floordiv,
  43.         'modulus': operator.mod,
  44.         'power': operator.pow,
  45.         'lt': operator.lt,
  46.         'le': operator.le,
  47.         'eq': operator.eq,
  48.         'ne': operator.ne,
  49.         'ge': operator.ge,
  50.         'gt': operator.gt
  51.     }
  52.     # 检查运算是否受支持
  53.     if operation not in operations:
  54.         return f"不支持的运算:'{operation}'。支持的运算有:{', '.join(operations.keys())}"
  55.     try:
  56.         # 特殊处理除以零的情况
  57.         if (operation in ['divide', 'floor_divide', 'modulus']) and num2 == 0:
  58.             return "错误:不允许除以零"
  59.         # 执行运算
  60.         result = operations[operation](num1, num2)
  61.         # 根据类型格式化结果
  62.         if isinstance(result, bool):
  63.             result_str = "True" if result else "False"
  64.         elif isinstance(result, float):
  65.             # 处理浮点数精度
  66.             result_str = f"{result:.6f}".rstrip('0').rstrip('.')
  67.         else:
  68.             result_str = str(result)
  69.         return f"答案是:{result_str}"
  70.     except Exception as e:
  71.         return f"计算过程中出错:{str(e)}"
  72. def reverse_string(input_string):
  73.     """
  74.     反转给定的字符串。
  75.     参数:
  76.     input_string (str): 要反转的字符串。
  77.     返回:
  78.     str: 反转后的字符串。
  79.     """
  80.     # 检查输入是否为字符串
  81.     if not isinstance(input_string, str):
  82.         return "错误:输入必须是字符串"
  83.     # 使用切片反转字符串
  84.     reversed_string = input_string[::-1]
  85.     # 格式化输出
  86.     result = f"反转后的字符串是:{reversed_string}"
  87.     return result
复制代码
这些函数被设计为根据提供的输入执行特定任务。basic_calculator 处理算术运算,而 reverse_string 反转给定的字符串。
第四步:构建工具箱
ToolBox 类存储智能体可以使用的所有工具,并提供每个工具的描述:
  1. class ToolBox:
  2.     def __init__(self):
  3.         self.tools_dict = {}
  4.     def store(self, functions_list):
  5.         """
  6.         存储列表中每个函数的字面名称和文档字符串。
  7.         参数:
  8.         functions_list (list): 要存储的函数对象列表。
  9.         返回:
  10.         dict: 以函数名称为键,其文档字符串为值的字典。
  11.         """
  12.         for func in functions_list:
  13.             self.tools_dict[func.__name__] = func.__doc__
  14.         return self.tools_dict
  15.     def tools(self):
  16.         """
  17.         将 store 中创建的字典作为文本字符串返回。
  18.         返回:
  19.         str: 存储的函数及其文档字符串的字典,以文本字符串形式返回。
  20.         """
  21.         tools_str = ""
  22.         for name, doc in self.tools_dict.items():
  23.             tools_str += f"{name}: \"{doc}\"\n"
  24.         return tools_str.strip()
复制代码
这个类将帮助智能体了解哪些工具可用以及每个工具的作用。
第五步:创建智能体类
智能体需要思考,决定使用哪个工具,并执行它。这是 Agent 类:
  1. agent_system_prompt_template = """
  2. 你是一个可以访问特定工具的智能 AI 助手。你的响应必须始终采用以下 JSON 格式:
  3. {{
  4.     "tool_choice": "工具名称",
  5.     "tool_input": "工具的输入"
  6. }}
  7. 工具及其使用时机:
  8. 1. basic_calculator: 用于任何数学计算
  9.    - 输入格式:{{"num1": 数字, "num2": 数字, "operation": "add/subtract/multiply/divide"}}
  10.    - 支持的运算:add/plus, subtract/minus, multiply/times, divide
  11.    - 示例输入和输出:
  12.      输入:"计算 15 加 7"
  13.      输出:{{"tool_choice": "basic_calculator", "tool_input": {{"num1": 15, "num2": 7, "operation": "add"}}}}
  14.      输入:"100 除以 5 是多少?"
  15.      输出:{{"tool_choice": "basic_calculator", "tool_input": {{"num1": 100, "num2": 5, "operation": "divide"}}}}
  16. 2. reverse_string: 用于任何涉及反转文本的请求
  17.    - 输入格式:只需将要反转的文本作为字符串
  18.    - 当用户提到“反转”、“倒过来”或要求反转文本时,始终使用此工具
  19.    - 示例输入和输出:
  20.      输入:"Howwwww 的反转?"
  21.      输出:{{"tool_choice": "reverse_string", "tool_input": "Howwwww"}}
  22.      输入:"Python 的反转是什么?"
  23.      输出:{{"tool_choice": "reverse_string", "tool_input": "Python"}}
  24. 3. no tool: 用于一般对话和问题
  25.    - 示例输入和输出:
  26.      输入:"你是谁?"
  27.      输出:{{"tool_choice": "no tool", "tool_input": "我是一个 AI 助手,可以帮助你进行计算、反转文本和回答问题。我可以执行数学运算和反转字符串。今天我能帮你做什么?"}}
  28.      输入:"你好吗?"
  29.      输出:{{"tool_choice": "no tool", "tool_input": "我运行良好,谢谢你的关心!我可以帮你进行计算、文本反转或回答你可能有的任何问题。"}}
  30. 规则:
  31. 1. 对于关于身份、能力或感受的问题:
  32.    - 始终使用 "no tool"
  33.    - 提供完整、友好的回应
  34.    - 提及你的能力
  35. 2. 对于任何文本反转请求:
  36.    - 始终使用 "reverse_string"
  37.    - 仅提取要反转的文本
  38.    - 删除引号、“的反转”和其他多余的文本
  39. 3. 对于任何数学运算:
  40.    - 始终使用 "basic_calculator"
  41.    - 提取数字和运算
  42.    - 将文本数字转换为数字
  43. 这是你的工具及其描述的列表:
  44. {tool_descriptions}
  45. 记住:你的响应必须始终是包含 "tool_choice" 和 "tool_input" 字段的有效 JSON。
  46. """
  47. class Agent:
  48.     def __init__(self, tools, model_service, model_name, stop=None):
  49.         """
  50.         用工具列表和模型初始化智能体。
  51.         参数:
  52.         tools (list): 工具函数列表。
  53.         model_service (class): 具有 generate_text 方法的模型服务类。
  54.         model_name (str): 要使用的模型的名称。
  55.         """
  56.         self.tools = tools
  57.         self.model_service = model_service
  58.         self.model_name = model_name
  59.         self.stop = stop
  60.     def prepare_tools(self):
  61.         """
  62.         将工具存储在工具箱中并返回它们的描述。
  63.         返回:
  64.         str: 存储在工具箱中的工具的描述。
  65.         """
  66.         toolbox = ToolBox()
  67.         toolbox.store(self.tools)
  68.         tool_descriptions = toolbox.tools()
  69.         return tool_descriptions
  70.     def think(self, prompt):
  71.         """
  72.         使用系统提示模板和工具描述对模型运行 generate_text 方法。
  73.         参数:
  74.         prompt (str): 用于生成响应的用户查询。
  75.         返回:
  76.         dict: 模型的响应,以字典形式返回。
  77.         """
  78.         tool_descriptions = self.prepare_tools()
  79.         agent_system_prompt = agent_system_prompt_template.format(tool_descriptions=tool_descriptions)
  80.         # 使用系统提示创建模型服务实例
  81.         if self.model_service == OllamaModel:
  82.             model_instance = self.model_service(
  83.                 model=self.model_name,
  84.                 system_prompt=agent_system_prompt,
  85.                 temperature=0,
  86.                 stop=self.stop
  87.             )
  88.         else:
  89.             model_instance = self.model_service(
  90.                 model=self.model_name,
  91.                 system_prompt=agent_system_prompt,
  92.                 temperature=0
  93.             )
  94.         # 生成并返回响应字典
  95.         agent_response_dict = model_instance.generate_text(prompt)
  96.         return agent_response_dict
  97.     def work(self, prompt):
  98.         """
  99.         解析 think 返回的字典并执行适当的工具。
  100.         参数:
  101.         prompt (str): 用于生成响应的用户查询。
  102.         返回:
  103.         执行适当工具的响应,如果找不到匹配的工具,则返回 tool_input。
  104.         """
  105.         agent_response_dict = self.think(prompt)
  106.         tool_choice = agent_response_dict.get("tool_choice")
  107.         tool_input = agent_response_dict.get("tool_input")
  108.         for tool in self.tools:
  109.             if tool.__name__ == tool_choice:
  110.                 response = tool(tool_input)
  111.                 print(colored(response, 'cyan'))
  112.                 return
  113.         print(colored(tool_input, 'cyan'))
  114.         return
复制代码
这个类有三个主要方法:

  • prepare_tools: 存储并返回工具的描述。
  • think: 根据用户提示决定使用哪个工具。
  • work: 执行所选工具并返回结果。
第六步:运行智能体
最后,让我们把所有东西放在一起并运行我们的智能体。在脚本的主要部分,初始化智能体并开始接受用户输入:
  1. # 示例用法
  2. if __name__ == "__main__":
  3.     """
  4.     使用此智能体的说明:
  5.     你可以尝试的示例查询:
  6.     1. 计算器运算:
  7.        - "计算 15 加 7"
  8.        - "100 除以 5 是多少?"
  9.        - "23 乘以 4"
  10.     2. 字符串反转:
  11.        - "反转单词 'hello world'"
  12.        - "你能反转 'Python Programming' 吗?"
  13.     3. 一般问题(将获得直接响应):
  14.        - "你是谁?"
  15.        - "你能帮我做什么?"
  16.     Ollama 命令(在终端中运行):
  17.     - 检查可用模型:    'ollama list'
  18.     - 检查正在运行的模型:      'ps aux | grep ollama'
  19.     - 列出模型标签:          'curl http://localhost:11434/api/tags'
  20.     - 拉取新模型:         'ollama pull mistral'
  21.     - 运行模型服务器:         'ollama serve'
  22.     """
  23.     tools = [basic_calculator, reverse_string]
  24.     # 使用 Ollama 和 llama2 模型
  25.     model_service = OllamaModel
  26.     model_name = "llama2"  # 可以更改为其他模型,如 'mistral'、'codellama' 等。
  27.     stop = "<|eot_id|>"
  28.     agent = Agent(tools=tools, model_service=model_service, model_name=model_name, stop=stop)
  29.     print("\n欢迎使用 AI 智能体!输入 'exit' 退出。")
  30.     print("你可以让我:")
  31.     print("1. 执行计算(例如,'计算 15 加 7')")
  32.     print("2. 反转字符串(例如,'反转 hello world')")
  33.     print("3. 回答一般问题\n")
  34.     while True:
  35.         prompt = input("问我任何问题:")
  36.         if prompt.lower() == "exit":
  37.             break
  38.         agent.work(prompt)
复制代码
3. 总结
在这篇文章里,我们从理解什么是智能体到一步步实现一个智能体。我们设置了环境,定义了模型,创建了必要的工具,并构建了一个结构化的工具箱来支持我们智能体的功能。最后,我们通过运行智能体将所有内容整合在一起。
这种结构化的方法为构建能够自动执行任务和做出明智决策的智能、交互式智能体奠定了坚实的基础。随着 AI 智能体的不断发展,它们的应用将在各个行业中扩展,推动效率和创新。
<hr/>我会定期更新干货和学习笔记。喜欢的话,记得点个关注 ,不错过后续精彩内容!

如何打造AI智能体?-3.jpg

透露小温馨 LV

发表于 2025-4-9 19:16:57

如何打造AI智能体?-1.jpg

AI 智能体(也有人称为 AI 代理),英文名称为 AI Agent,更准确地说现在就是指 LLM Agent,它是一个执行逻辑由其底层模型(LLM)控制的程序。

如何打造AI智能体?-2.jpg

LLM Agent 与少样本提示(few-shot prompting)或固定工作流(fixed flows)等方法的不同之处在于,它能够定义和调整执行用户查询所需的步骤。如果能够访问一组工具(如代码执行或 Web 搜索),Agent 可以决定使用哪种工具、如何使用它,并根据输出迭代结果。这种适应性使系统能够以最少的配置处理各种用例。

如何打造AI智能体?-3.jpg

Agent 架构涵盖了从固定工作流的可靠性到自主代理的范围。例如,像检索增强生成 (RAG) 这样的固定流程可以通过自我反思循环进行增强,使程序能够在初始响应不足时进行迭代。或者,ReAct 代理可以配备固定流程作为工具,提供灵活而结构化的方法。架构的选择最终取决于用例以及可靠性和灵活性之间的理想权衡。
接下来我将介绍如何从头构建一个通用的 AI Agent。
第一步:选择正确的 LLM  
选择正确的模型对于实现所需的性能至关重要。有几个因素需要考虑,例如许可、成本和语言支持。构建 LLM Agent 最重要的考虑因素是模型在编码、工具调用和推理等关键任务上的性能。要评估的基准包括:

  • 大规模多任务语言理解 (MMLU)(推理)
  • 伯克利的函数调用排行榜(工具选择和工具调用)
  • HumanEval 和 BigCodeBench(编码)
另一个关键因素是模型的上下文窗口。Agent 工作流可能会消耗大量 token——有时 100K 或更多——更大的上下文窗口确实很有帮助。
截至我写本文时,你可以需要考虑的模型:

  • 闭源模型:GPT4-o、Claude 3.5
  • 开源模型:Llama3.2、Qwen2.5。
一般来说,较大的模型往往提供更好的性能,但可以在本地运行的较小模型仍然是一个不错的选择。对于较小的模型,你将只能使用更简单的用例,并且可能只能将你的Agent 连接到一两个基本工具。
第二步:定义 Agent 的控制逻辑  

如何打造AI智能体?-4.jpg

简单 LLM 和 Agent 之间的主要区别在于系统提示(system prompt)
在 LLM 上下文中,系统提示是在模型处理用户查询之前提供给模型的一组指令和上下文信息。
LLM 所期望的 Agent 行为可以在系统提示中编纂。
以下是一些常见的 Agent 模式,可以根据您的需求进行定制:

  • 工具使用:Agent 确定何时将查询路由到适当的工具或依靠自己的知识。
  • 反思:Agent 在回复用户之前会检查并更正其答案。大多数 LLM 系统也可以添加反思步骤。
  • 推理然后行动 (ReAct):Agent 反复推理如何解决查询,执行操作,观察结果,并确定是否采取其他操作或提供响应。
  • 计划然后执行:Agent 通过将任务分解为子步骤(如果需要)进行预先计划,然后执行每个步骤。
最后两种模式(ReAct 和计划然后执行)通常是构建通用单一 Agent 的最佳起点。

如何打造AI智能体?-5.jpg

为了有效地实现这些行为,你需要进行一些提示工程(prompt engineering)。你可能还想使用结构化生成技术。这基本上意味着塑造 LLM 的输出以匹配特定的格式或模式,以便 Agent 的响应与你想要的沟通风格保持一致。
第三步:定义 Agent 的核心指令  
我们往往想当然地认为 LLM 具有一系列开箱即用的功能。其中一些功能很棒,但其他功能可能并不完全符合我们的需求。为了获得我们想要的性能,在系统提示中详细说明我们想要和不想要的所有功能非常重要。
这可能包括以下说明:

  • Agent 名称和角色:Agent 的名称以及其用途。
  • 语气和简洁性:听起来应该正式还是随意,以及应该简短到什么程度。
  • 何时使用工具:决定何时依赖外部工具而不是模型自身的知识。
  • 处理错误:当工具或流程出现问题时,Agent 应该做什么。
第四步:定义并优化你的核心工具  
工具赋予了你的 Agent 超能力。使用一组定义明确的工具,你可以实现广泛的功能。要包含的关键工具是代码执行、Web 搜索、文件读取和数据分析。
对于每个工具,你需要定义以下内容并将其作为系统提示的一部分:

  • 工具名称:功能的唯一描述性名称。
  • 工具说明:清晰地解释工具的功能和使用时间。这有助于 Agent 确定何时选择正确的工具。
  • 工具输入模式:概述必需和可选参数、其类型以及任何约束的模式。Agent 使用它根据用户的查询填写所需的输入。
  • 指向在何处/如何运行工具的指针。
在某些情况下,你需要优化工具以获得所需的性能。这可能涉及使用一些快速工程调整工具名称或描述、设置高级配置以处理常见错误或过滤工具的输出。
第五步:制定可靠的记忆处理策略  

LLM 受到其上下文窗口(即它们一次可以“记住”的 token 数量)的限制。这种记忆很快就会被诸如多轮对话中的过去互动、冗长的工具输出或代理所依据的额外上下文等内容填满。这就是为什么制定可靠的记忆处理策略至关重要。
在 Agent 的上下文中,记忆是指系统存储、调用和利用过去互动信息的能力。这使代理能够随着时间的推移保持上下文,根据以前的交流改进其响应,并提供更加个性化的体验。
常见的记忆处理策略:

  • 滑动记忆:将最后 k 个对话回合保留在记忆中,并删除较旧的对话回合。
  • token 记忆:保留最后 n 个 token,忘记其余的 token。
  • 总结记忆:使用 LLM 总结每个回合的对话并删除单个消息。
此外,你还可以让 LLM 检测关键时刻以存储在长期记忆中。这使 Agent 能够“记住”有关用户的重要事实,从而使体验更加个性化。
到目前为止,我们介绍的五个步骤为建立代理奠定了基础。但如果我们在此阶段通过 LLM 运行用户查询,会发生什么情况?

如何打造AI智能体?-6.jpg


此时,Agent 生成原始文本输出。那么我们如何让它真正执行下一步呢?这就是解析和编排的作用所在
第六步:解析代理的原始输出
解析器是一种将原始数据转换为应用程序可以理解和使用的格式(如具有属性的对象)的函数
对于我们正在构建的 Agent,解析器需要识别我们在第二步中定义的通信结构并返回结构化输出,如 JSON。这使应用程序更容易处理和执行 Agent 的后续步骤。
注意:某些模型提供商(如 OpenAI)可以默认返回可解析的输出。对于其他模型,尤其是开源模型,则需要进行配置。
第七步:安排代理的下一步行动  
最后一步是设置编排逻辑。这决定了 LLM 输出结果后会发生什么。根据输出,你可以:

  • 执行工具调用,或
  • 返回答案 — 对用户查询的最终响应或对更多信息的后续请求。

如何打造AI智能体?-7.jpg

如果触发了工具调用,则工具的输出将发送回 LLM(作为其工作内存的一部分)。然后,LLM 将确定如何处理这些新信息:执行另一个工具调用或向用户返回答案。
以下是此编排逻辑在代码中的示例:

如何打造AI智能体?-8.jpg

多智能体系统从何而来  
虽然这一代 LLM 非常强大,但它们有一个关键的限制:它们难以应对信息过载。过多的上下文或过多的工具会使模型不堪重负,从而导致性能问题。通用的单一 Agent 最终会达到这个上限,特别是因为 Agent 是出了名的 token 饥渴。
对于某些用例,多 Agent 设置可能更有意义。通过将职责划分给多个 Agent,你可以避免单个 LLM Agent 的上下文过载并提高整体效率。
话虽如此,通用的单 Agent 设置是原型设计的绝佳起点。它可以帮助你快速测试用例并确定事情开始崩溃的地方。通过此过程,你可以:

  • 了解任务的哪些部分真正受益于 Agent 方法。
  • 确定可以在更大的工作流中作为独立流程分离的组件。
从单个 Agent 开始可以为你提供宝贵的见解,以便在扩展到更复杂的系统时改进你的方法。
准备好深入研究并开始构建了吗?使用框架是快速测试和迭代 Agent 配置的好方法:

  • 计划使用 Llama 3 等开源模型?试试 Bee Agent Framework。
  • 计划使用 OpenAI 等前沿模型?试试 LangGraph。

一天八百个情绪 LV

发表于 2025-4-9 19:31:25

从零到一:打造属于你的AI智能体
国外卷智能体,国内也都在搞 AI Agent,2025 年也将成为 Agent 的元年。构建智能体主要两种情况,一个是工作流模式,另外一种是直接开发应用,接下来分别给大家介绍一下两种产品和构建过程。工作流模式,以 Coze为例。应用开发,以国内首家“文生软件”平台码上飞|Codeflying为例,它不仅可以部署到本地,打包带走所有代码和文档的!!2025 年打造专属的个人Agent 不再是遥不可及的梦!
工作流模式开发软件(需要懂点逻辑,有点门槛,但是上手也很简单)
1.Coze 扣子,AI产品榜全球第一
1️⃣百度搜索,或者直接登录官网

如何打造AI智能体?-1.jpg


扣子的百度搜索结果

2️⃣进入扣子官网

如何打造AI智能体?-2.jpg


扣子首页

3️⃣进入“工作空间”,进行项目开发

如何打造AI智能体?-3.jpg


工作空间

4️⃣点击右上角“创建”,进行开发

如何打造AI智能体?-4.jpg


创建页面

5️⃣选择创建类型,可以选择创建智能体或者创建应用
智能体:对话式的方式;应用:包含用户界面的完整应用

如何打造AI智能体?-5.jpg


创建类型选择

6️⃣我们选择创建应用,进入创建页面,选择“工作流”形式

如何打造AI智能体?-6.jpg


输入名称简介和头像

如何打造AI智能体?-7.jpg


业务逻辑选择工作流

7️⃣创建新的工作流

如何打造AI智能体?-8.jpg


添加新建工作流界面

如何打造AI智能体?-9.jpg


输入猜灯谜的工作流名称和描述

如何打造AI智能体?-10.jpg


condition工作流模式

如何打造AI智能体?-11.jpg


试运行之后点击发布

8️⃣后台界面以上步骤就设计完成了,进入到前端 UI界面
选择:小程序和 H5,接下来拖拉拽就行了

如何打造AI智能体?-12.jpg


用户设计界面

如何打造AI智能体?-13.jpg


建好的页面

接下来就可以开始试用了,但是因为需要设计和调整,需要时间很长,至少半天的时间,大家可以自己尝试下,不再展示了。接下来再推荐一个几分钟就能生成的应用,还不用思考,基本上 AI全帮我做了。
AI文生软件开发,一键开发前后端,几分钟生成应用,还能带代码和技术文档
2. 码上飞,AI产品榜本周周榜第一
1️⃣搜索码上飞,或者收藏网址直接进入官网

如何打造AI智能体?-14.jpg


码上飞官网

2️⃣点击“立即体验”,进入开发应用,创建新应用

如何打造AI智能体?-15.jpg


创建新应用

3️⃣进入应用广场,选择开发同款,或者在对话框直接输入开发需求

如何打造AI智能体?-16.jpg


应用广场

如何打造AI智能体?-17.jpg


自主开发:输入开发需求,系统澄清需求

4️⃣确认之后进入到开发,一步一步确认就可以了,大概 10 分钟左右开发好啦,还能一键部署,在线体验,实时修改,还能下载所有文档申请软著!!!!简直不要太爽!!!

如何打造AI智能体?-18.jpg


后台登录界面

如何打造AI智能体?-19.jpg


后台管理界面(自带数据库)

如何打造AI智能体?-20.jpg


前端登录界面

5️⃣附带需求的指令,有需要的可以收藏哦

  • 1. 用户登录:-用户访问“登录页面”,输入账号和密码进行登录。-登录成功后,用户跳转到“首页”。
  • 2. 用户注册:-在“登录页面”中,用户点击“去注册”按钮,跳转至“注册页面”。-用户填写必要信息进行注册,完成后返回登录页面
  • 3. 首页浏览:-用户访问“首页”,查看轮播图和公告栏。-用户通过导航栏按钮,选择跳转至“灯谜列表”、“活动信息”或“个人中心”。
  • 4. 查看个人信息:-用户从导航栏跳转至“个人中心页面”。-用户查看和编辑个人信息,保存后更新显示。
  • 5. 查看灯谜列表:-用户从导航栏跳转至“灯谜列表页面”。-页面展示所有灯谜的基本信息,用户可以查看某个灯谜的详情。
  • 6. 添加新灯谜:-用户在“灯谜列表页面”点击“添加新灯谜”按钮,弹出新增灯谜表单。-填写完毕后点击保存,新增灯谜自动显示在列表中。
  • 7. 查看灯谜详情:-用户在“灯谜列表页面”选择某个灯谜,跳转至“灯谜详情页面”。-页面展示具体灯谜内容和答案,用户可进行编辑。
  • 8. 编辑灯谜:-用户在“灯谜详情页面”点击“编辑”按钮,弹出编辑灯谜表单。-修改完毕后点击保存,更新后的灯谜信息显示在详情页面。
  • 9. 查看活动信息列表:-用户从导航栏跳转至“活动信息列表页面”。-页面展示所有活动的基本信息,用户可以查看某项活动的详情。
  • 10. 添加新活动:-用户在“活动信息列表页面”点击“添加新活动”按钮,弹出新增活动表单。-填写完毕后点击保存,新增活动自动显示在列表中。
  • 11. 查看活动详情:-用户在“活动信息列表页面”选择某项活动,跳转至“活动详情页面”。-页面展示具体活动信息,用户可进行编辑。
  • 12. 编辑活动:-用户在“活动详情页面”点击“编辑”按钮,弹出编辑活动表单。-修改完毕后点击保存,更新后的活动信息显示在详情页面。
据说春节还有分享有优惠券,大家赶紧玩儿起来吧~~~
欢迎分享大家构建的比较好玩儿的智能体!!!

您需要登录后才可以回帖 登录 | 立即注册