Modelscope Agent初体验与思考

2023-12-10 21:20

本文主要是介绍Modelscope Agent初体验与思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:LLM → \to Agent

ChatGPT为代表的大语言模型就不用过多的介绍了,ChatGPT很强大,但是也有做不到的东西。

例如:

  1. 实时查询问题:实时的天气,地理位置,最新新闻报道,现实世界正在发生和刚结束的信息等
  2. 不能产生动作:你只能获得语言的回复,而不能让它执行动作。当然也有类似的工作(Reac、AutoGPT)
  3. 无法访问专有信息源。模型无法访问专有信息,例如公司数据库中的客户名册或在线游戏的状态。
  4. 缺乏推理能力。某些推理超出了神经方法的能力范围,需要专门的推理过程。我们在上面看到了算术推理的经典例子。 GPT-3 和 Jurassic-1 在 2 位加法上表现良好,令人印象深刻,但在 4 位加法上自信地给出了无意义的答案。随着训练时间的增加、更好的数据和更大的模型,LLM 的性能将会提高,但不会达到 20 世纪 70 年代 HP 计算器的鲁棒性。而数学推理只是冰山一角。
  5. 微调成本问题。微调和服务多个大型模型是不切实际的。我们也无法针对训练中未涵盖的新任务进一步调整经过多任务训练的 LLM ;由于灾难性遗忘,添加新任务需要对整个任务集进行重新训练。考虑到训练此类模型的成本,这显然是不可行的。

那么Agent又是什么?

agent用来调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。

对于agent的定义

将 Agents 定义为LLM + memory + planning skills + tool use,即大语言模型、记忆、任务规划、工具使用的集合。

在这里插入图片描述


生成式Agent

这个方向非常的火,效果也非常的惊人。例如大名鼎鼎的斯坦福小镇项目:

在这里插入图片描述
在这里插入图片描述

  • 核心构建原理如下图:
    在这里插入图片描述
  • 生成Agent的设计将 LLM 与记忆、规划和反射机制相结合,使代理能够根据过去的经验进行行为,并与其他代理进行交互。

更多关于LLM-Agent可以阅读一下这篇blog:LLM-Based Agent


Agent调用流程

结合背景调研,我简单的猜想一下魔塔Agent构建的实际流程:

  1. 用户意图识别:在每个用户语句之后,模型需要确定是否需要 API 调用来访问外部服务,这需要能够了解其知识的边界或是否需要外部操作。
  2. 找到合适的API:每次特定 API 调用之前都需要进行 API 搜索。当执行API搜索时,模型应该将用户的需求总结为几个关键词。 API搜索引擎将查找API池中最符合的API。
  3. API调用:API调用后回复完成API调用并获得返回结果

关于API:

最简单实用的就是实时信息的API调用。可以找一些常见的API,例如Google/百度的引擎、日历查询、航班信息查询、酒店预订和生活联系紧密的API等。

关于模型:

其实对于调用的模型除了LLM之外还可以涉及其他的一些小的AI模型,例如专门做ImageCaption、SpeechRecognition、Translate和DocumentQA的模型。将它们视为API接口,LLM不需要了解它们的模型细节或端到端联合训练。他们只需要知道它们的目的和输入/输出格式,然后就可以使用这些人工智能模型来增强特定方面的能力。


实战练习

  • Agent创建专用链接:https://modelscope.cn/studios/modelscope/AgentFabric/summary

  • 聊天框框中输入你想构建的Agent,描述功能需求,可以多轮对话追加详细信息

例如:构建一个天气查询的Agent:Angel

在这里插入图片描述

在这里插入图片描述

  • 完善一下Agent的详细需求,看一下最后收集的关于Agent的详细功能描述

在这里插入图片描述


理想中的效果:

在这里插入图片描述


试一下调用Agent的效果

在这里插入图片描述
在这里插入图片描述


  • 天气API调用很稳定,还得是高德!
  • 图像生成API就有些差强人意,可能是给出的Prompt信息有点少,生成不出来上面理想的效果,各位Prompt Engineers 可以试一试!

这篇关于Modelscope Agent初体验与思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478407

相关文章

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

【编程底层思考】详解Java的JUC多线程并发编程底层组件AQS的作用及原理

Java中的AbstractQueuedSynchronizer(简称AQS)是位于java.util.concurrent.locks包中的一个核心组件,用于构建锁和其他同步器。AQS为实现依赖于FIFO(先进先出)等待队列的阻塞锁和相关同步器提供了一套高效、可扩展的框架。 一、AQS的作用 统一同步状态管理:AQS提供了一个int类型的成员变量state,用于表示同步状态。子类可以根据自己

一道算法题引发的动态内存管理的思考

在做PKU2762时,需要建邻接表。 于是按部就班写了下面一个插入边到邻接表中的函数: const int VMAX = 1010;typedef struct Graph{int vex;Graph* next;}Graph;Graph ArcGraph[VMAX];void insert(int u, int v){Graph* t = new Graph;Graph*

AGENT时区问题

1、因agent的时区与machine时区不匹配导致启动agent失败,解决在安装检查时区的检查的警告问题 解决问题:在利用12c MOS推送方式安装12c agent时,会出现时区检查的warning,上面提示利用emctl resetTZ agent在安装后处理。在做的过程中,可能遇到某些状况的解决方法 环境:HP_UNIX B.11.31 --查看agent状态 $ ./emctl stat

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

go 和 java 技术选型思考

背景:       go和java我这边自身都在使用,感受比较深,java使用了有7年多,go也就是今年开始的,公司需要所以就学了使用,发现这两个语言都很好,需要根据场景选择,我写下我这边的看法。 关于go和java语言层面和特性就不说了,网上都有,我这边从我这边实际使用的场景情况来说,供大家参考。 给我最大的感受,php转go的不少,也是符合未来技术大趋势的,目前来看,java转go也比较

思考自己写博客的意义

感想 从今年2月份开始,我就要求自己以每周4篇的速度写博客。然而问题是:每周的空闲时间是不稳定的,这导致我没法保证花费相同的时间去输出稳定质量的博客。当时间不够时,我将面临选择:是减少数量来保证稳定的质量,还是降低质量来保证稳定的数量? 我选择的是——牺牲质量。因为,相比于“质量”,“数量”是准确可见的。我担心:一旦有一次没能完成目标数量,便会出现“破窗效应”,让我潜意识里再也不认同“目标”了

是时候重新思考你的Google广告策略了吗?

以产品为中心、仅以关键词为焦点的广告活动是 谷歌广告中常见的一种活动类型。 如果你销售复古女式T恤,你可能会设置基于“复古女式T恤”关键词的独立关键词广告活动。 对于许多B2C零售商来说,这种方法效果不错。但是,对于其他一些商家来说,基于产品和关键词的广告活动并不一定是最好的策略。 比如说,我们接手了一个新的B2B客户的谷歌广告账户,其所有广告活动都是以产品为中心、仅关注关键词的广告活动。