这节课给大家分享一下如何基于扣子定制化开发股票分析插件。首先给大家看一个效果,就是我们现在希望做一个功能,输入股票的这么一个代码的话,可以查询出来股票目前当前实时交易的这么一个价格。那这么一个功能的话,我们一般怎么来实现呢?也就是说我们现在想通过一个插件,就是可以做各种各样的一个实现。比如说我们有天气的这个插件,大家可以看一下cos的这个官网。在这个商店里面我们其实可以看到很多的一些插件。比如说生活类的,最常用的就是一些像查询天气,对不对?查询地图,然后什么创作。
那我们现在希望什么?我们可以做一些查询股票,跟金融相关的一些插件。你看这个商店里面其实也有很多做股票的,让大家掌握了这种开发查询股票的这个插件之后,触类旁通,大家就可以开发其他类似的一些插件了,并且你可以把这些插件的话发布到商店里面进行一个售卖,这个都是OK的。
好,然后的话我们讲一下这个如何来实现。首先就是按照我们按照一个步骤给大家来讲。首先第一步的话,大家需要在在官方这个网站上面。在这个工作空间里面,大家看到一个叫资源库的地方。资源库大家点右上角资源,点这个加号,新增一个插件,那插件名称的话,我们就叫查询股票信息然后这个插件,因为我们这个插件的话是要基于这个代码去实现的,就是我们基于这个前端的这个node JS这么一个环境去跑一些这个。Javascript一些脚本,通过脚本我们去动态的去查询这个第三方股票API它提供了一个服务,就是我们可以根据股票的代码去查询股票的一些信息,就相当于我们调外部的一些接口去实现。所以说我们要基于这么一个no JS这么一个环境去写一些java supreme的代码去实现这个功能。
所以说我们这里要选原测插件,在code ID里面,然后运行环境,它其实这是两个,一个是node JS,就是前端java c javascript的这个运行时环境。还有一个是python 3,就python的这么一个环节。所以说大家会哪种语言你就用哪一种,IDE运行时就可以了,那咱们选这个node JS,点确认,然后完成之后大家可以看到一个空白页面,然后在下方有一个在ID里面创建工具。
那现在有了插件之后,插件下面就要有一个工具。比如说这个工具的话,咱们就是用的这个什么呢?叫查询股票的这么一个工具,所以说首先得添加一个工具,那这个工具的话我们就用这个里面的一个名字,叫search stock Price,用这个工具。然后这个工具的话,我们比如说就叫做根据股票名称查询股票价格,然后确定。
然后创建完这个工具之后,大家可以看到,它会给你默认生成一堆代码,这个不用管,我们要写自己特定的一些代码,大家可以把这个代码等下再call过来,但是我们首先需要去干嘛呢?需要去加一些参数。因为咱们这个逻辑,就是这个代码的话,他要去根据这个股票的代码,这股票的扣的去查询这个股票的信息的。所以说咱们原数据里面要加一些参数,就是外部传进来的一些参数,就是这个code,这个参数的话就是股票代码。你首先得把这个参数加进去,然后加完这个参数之后的话,然后这里咱们点保存,点保存也就是等一下执行代码的时候需要用到这个参数,用到这个参数OK。所以说我们现在就要把那个代码复制一下。
大家把这个代码复制一下就可以,复制到这个代码这个区域里面来允许这个代码的话其实也不难,它主要是导入了一些库,这个是台湾这个javascript它的一个写法,就用到一个GS的一些写法。也就是说它这个里面首先得要去导入一些库,比如说我们要用的这个actually,这个是调用那个请求的,就是说我们等一下要访问这个API,这个API是国外一个专门查询股票实时交易价格的这么一个API服务。就等一下咱们要把这个code,就股票代码得传给他,然后再拼接上一个APIK,当然我们这个APIK是添乱的,用的它是免费的。这个API它调用次数有限制,但是还是可以用的。好,那这个的话我们就相当于要把这个code给它传进来。
所以说我们刚刚为什么写一个code参数呢?目的就是为了在这个插件里面等下去拿到这个请求参数,这个input它会带一个code参数进来。有了这个参数之后,我们接下来可以干嘛呢?就可以去访问这个API了,完API之后,我们接下来会干嘛呢?拿到这个API的一个response,这个response就是一个股票的信息,封装在一个什么呢?它的一个data对象里面,data对象这个data里面就包括了一些股票的信息,比如说股票的价格就是用这个参数给它取出来,第五个参数就是一个价格,然后我们最终其实就是要拿一个价格,所以我们取到它返回的一个J报文里面的一个信息,叫press价格。这个信息如果说这个代码执行过程中报错的话,他会给你输出一段内容。
就是你当前去根据code获取那个股票信息的时候报错了,他会把错误信息打在这里,方便我们去排查问题。然后下面的话就是返回这个什么code之类的逻辑,就是我们最终要把这个code返回回去,就是有扣只有扣的这个价格没查出来,因为报错了,查不出来的就返回那了。但是我们最终还是会打印一个日志的OK。
然后这里的话大家可以首先会看到一个东西叫什么呢?叫找不到什么模块,就这个IOS这个一代没有这里。因为我们是基于node CS的一个环境的,前端要跑这个代码的话,你得把一些这个库给它装起来,所以说这里首先要添加依赖,这个依赖的话大家用这个,就这个s at 1.6.8这个版本,把这个复制一下,复制一下,复制到这里。然后咱们点搜索,点一下有一个下载这个按钮,然后点一下这个下载。大家可以看一下这个控制台,你看它下面就开始去安装了。
这个库安装完成的话,上面那个编译报错的地方就没有再报错了。就意味着咱们这个代码就可以跑起来了。跑起来之后,大家其实你可以点一下测试,你可以做一个简单测试,测试的话大家你就可以简单说一个代码就可以了。比如说我们这个代码,它是一个Jason格式,大家要用这个Jason格式,比如说我们这里写一个。引号code,然后把那个代码给它写进去,然后点运行。但是他已经查出来了,这个198美元是吧?就是这个你传到股票代码的话,它就给你实时的给藏起来。
然后下面我们就可以看到一些信息,你看运行的一个时间,你每调用一次它都会有一个执行时间,比如说花了这个1.6秒,就他调用这个API他要一些这个深花费了一些时间,然后最终大家可以看到输出,输出的话就在这里,它的一个结果它其实就给你返回了,大家看输出就是两个参数,一个叫code,一个叫Price价格,最终给你打印出来。好,到这一步的话,我们这个代码,就是这个插件,这个代码这个逻辑就算完成。然后同样的,我们来点一下这个发布,我们一定要把这个发布,不然这个插件的话用不了。大家看发布完之后,你看它就会去什么生成构建是吧?把整个包给你处理,然后把它发布起来,这个包只有4.8兆,很小,我们稍微等待一下,他在做一个部署跟构建。
好,来看已发布更新。当大家看到这个的时候,就说明这个插件它已经可以用了,怎么用呢?我们之前有一期给大家讲过,就是这个智能体怎么样去把这个插件给它集成进来,大家如果这一块不清楚的话,可以听一下我之前的分享,就专门我讲一期就是扣子就怎么样去集成这个插件的。
好,然后我们现在有了这个插件之后,接下来要有一个智能体?比如说我们一个智能体叫什么呢?我们叫股票助手,股票。助手,我们就建这么一个智能体。
好,有了这个智能体之后,大家看我们现在就可以把这个插件进引入进来。在这里大家看插件,然后点这个加号,加号这里大家看啊,我们点这个,左边有一个叫资源库工具。点一下资源库工具里面大家可以看到我就加了一个插件,要查询股票信息。我之前是加了一个查询股票价格,这个是我刚刚创建的是吧?刚创建的话大家看我点开这个查询股票信息,这个箭头下面有一个sea stock Price,就是一个工具。
这个插件归插件,那下面我们可以加各种各样的工具。比如说现在是查价格,那我后面我要查各种详细信息怎么办呢?那我可以再加一个工具,我们可以添加多个工具,然后它的参数就是我们要传入一个股票代码,让它传进去。那现在我们点一个添加,点击添加之后,大家可以看到就是这个插件就算集成完了。然后接下来我们就是去问问题,大家问问题,我们就不需要输入这段代码了,你就直接输入code就可以了。
比如说你现在就直接问他一个问题,问他什么问题呢?你就说这个AAPL股票价格叫AAP LPL股票价格,他就直接可以去调用插件了。你看调用插件股票插件,由于查询股票查询工具未返回有效数据,在我无法获取这个AIPL的一个信息。如果遇到这个问题的话,大家就可以看一下,就是它整个的一个数据的话,你没给他返回,所以遇到这个问题怎么办呢?那咱们肯定得去看一下这个插件里面的逻辑是不是有问题。我们可以编辑一下这个插件,找一下插件。我们找到回到刚刚那个地方资源库,查询股票信息这个插件。这个插件的话就是大概我们再编辑一下,编辑这个插件,我们看一下是哪里出问题了,应该是那个原数据这边有一个输入参数,也就是说最终这个代码虽然跑得通,你看这个结果他能帮你把股票信息查出来。
但是这个参数没有最终,只是控制台把它打印出来了,但是我们整个插件没有把它输入出来,所以说大家注意,代码里面的逻辑是把它返回,但是原数据就是这个工具,他没有拿到这个数据,那怎么办呢?大家看点编辑新增参数,在这个地方我们先写上code,就跟这个代码里面的参数一绑定,股票名称,然后再加一个参数叫什么呢?股票价格,这个叫我们叫Price。股票价格,然后类型的话是number数字类型的。
然后保存好完了之后,我们一定要点发布,必须要点发布。不发布的话我们还是会出现刚刚那个问题。工具未测试,请先测试,我们点测试来运行一下。测试没没问题,那就发布。来下一步发布,大家稍等一下,这里稍微会有些慢。
好,这是他在打包,稍等一下。
前端这个JS有时候构建的时候就会比较慢。OK好,发布更新了。好,然后咱们再回到刚才那个智能体再看一下,看一下这个问题有没有被修正,所以说以后大家遇到问题不要慌,你可以看一下整个思路,就是输入输出的参数有没对,基本上就这些原因。好,然后我们清空一下,把这个绘画清空一下来再来问一下。来调用这个工具,正在为您查询,请稍等。他这个没有有返回是吧,我再问一下。
暂未获取到该函数返回的实际价格数据。我们看一下是哪里出问题了,代码逻辑。看一下是不是有哪一步都出错了,我看一下这个里面到底有没有返回,code运行完毕,最终没有给我返回是吧?插件名称查询股票看一下,我单步调试一下,看一下这个结果对不对,再回到刚刚那个插件那个地方,股票信息绑定卡片再编辑一下,看一下是不是刚刚那个参数写错了。
Price ERSA看一下,prize在这里是不是要用string类型的,把它改改一下,改成。编辑改成训练型的股票代码,其实应该也没关系,运行一下。你看这个地方价格是可以查出来的,Price。我们看一下是不是有哪些地方有问题。Price。股票名称、股票价格没有问题,发布一下。
我们等下再试一下,是不是这个参数类型有问题。
股票名称。看一下刚刚那个提示词是不是,这里可能跟那个提示词也有关系,这里叫股票价格。我刚刚问的是直接是问的价格是吧?你问的是股票价格,我们再试一下。股票助手,股票价格再清一下来,再试一下。
大家看就可以了,你看当前AAPL的股票价格为198美元。刚刚就那个数值类型有问题,就不能用number的,必须用这个字符串类型的,否则他会有问题。比如说我们其实还可以搜一些其他的,比如说我们现在查一下最新。
股票行情。价格。代码价。
随便找一个找一个上证指数。比如用一下这个代码去看一下。价格。
10.8。这个好像不准,那是不是只能查国外的一些,我们搜一下国外的。国外。
纳斯达克。
联播全球。
行情随便找一个看一看。banquet.
这个他应该只能搜英文的那个扣子。
DAX说一下看一下。BAX股票价格。
37.94。这可能还是有一些不太准确,因为他调用的那个API不一定跟这个是实时同步的,反正我们是调用了一个API。大家以后如果说你想要类似去实现类似的功能的话,你都可以参考这种方式。不管是查询这个股票还是查询其他的。比如说你想分析一些热点数据,你都可以调用一些API去实现。
这个只是提供了一种方式,大家可以自己去开发一些插件,这节课最重要的话就是大家要掌握这个插件的一个开发逻辑。所以在这个里面我们要去创建工具的时候,比如说我现在跟大家说一下,其实你工具还可以有多个。比如说我们现在再加一个工具,刚刚是搜索价格对不对?我们再叫搜索这个stock Price stock in four,就我要搜索更加详细一点,查询股票详细信息,search。stock.
Detail详情。
想起。我们现在又加了一个插件,然后我们把这个代码拷进来来粘贴一下。大家以后你可以自己加各种各样的工具,就不一定局限一个你想加什么工具,这个都没关系的那这个里面我们把它这里detail,我们把它详情打印出来,返回这个detail。Detail的话就直接用这个,直接用data了,直接返回data了。生成twice。直接用这个detail返回了Price。Price.
Now这个detail我们可以返回now。原数据这里我们把首先输入的地方,把这个地方加一个code,然后描述股票。是类型的,然后编辑新增,然后把刚刚那个code。然后再新增一个detail。股票。详情,然后点保存,上面也点保存,然后再看一下刚刚那个代码,这里有个编译报错是吧?Output, 这个output里面需要输入吗?Output搜一下。
刷新一下看一下。
现在,还是报错,说运行一下。
原数据不包含这个code。名称。我刚刚已经加了这个code了,detail.
Code股票代码,我原数据里面其实已经加进去了。这里为啥要报错呢?Input code。
Code the stream. detail.
此处声明了。
这个是上面那个逻辑的。
卫生写代码。看一下这个插件里面。编辑。看一下这个详情里面,然后有一个编译报错。
这两个工具里面,这个里面有Price类型,output里面需要两个工具,那我就把它都加上,这里感觉有点奇怪。把它加上。
press.
我们把这个价格也加上,我感觉跟那个地方有点冲突。必须要这个Price是吧?我这原数据里面我其实都没有那个了,这两个工具会相互影响。我们把它都加上。然后价格保存,把这个参数都加上,应该就没事了。再运行一下,请检查原数据。
原数据里面有这个扣的。
我要把这个参数加上。
code. AAPL, 这就是APLAAPL运行。好,大家看这个详情是不是有了。你看包括代码?开盘价、最高价、最低价、价格、当前价格,然后等等,是不是都出来了是吧?这个就是我们想要的这么一个详细的一个解释,详细的一个解释。我们现在比如说我现在把它发布了,两个工具都发布都发布。
然后我等下,我想查价格我就查价格,我想查详情就查详情,我们可以自由的去选择插件,大家以后你也可以加很多各种各样的工具,你想加什么工具,就把它这里可以有多个的。稍微有点慢。
发布更新了。来,咱们再回到刚刚那个智能体里面看一下。好,大家看啊,我们查这个股票详情,听一下。详情。
他这里只用了一个工具,我们没配,我们把多个工具加进来。大家看啊资源库工具查询股票,大家看我们把这两个工具都加进来,就是你选如果说你只加了一个工具的话,另外一个肯定不会用到了。我们我要查详情是吧?清一下,查详情。大家看它是调用这个detail这个接口是吧?为你查的详情,当前价格为什么什么什么?当然它只是还只是用到这个价格,但是我其实想要更多的详细资料,看一下。详情再给他试一下,他有时候可能会出现一些幻觉。
请输出,刚刚那个应该他没有把它输出,还要加个参数,遗漏了一个地方,查询股票信息这个地方,detail里面这里那个输出我好像没有定义,原数据看一下detail,这里有那个detail,股票详情应该是返回了,看一下这个代码里面detail,我们把详情都给它返回回去了。Detail这里应该是有的,运行一下。其实我想要拿到这个信息里面的这个数据,我看看问我能问的更加具体一些。原数据它可能不是这个string类型的,它可能是object类型的,这个类型可能搞错了。参数名称,参数描述area。它是个对象类型的,所以说我们这里要把这个参数给它细化一下。
新增参数。
这里我再看一下。
这个Price的话。擦掉应该在后面再加一些,我们就先查两个看一下。这个是股票代码,然后这个是不是open,是不是开盘价?
再来一个,先试一下。
最高价格,我们用这种方式给大家试一下,来再发布一下看行不行。未测试,测试一下。好发布。
看一下这么做行不行,它一些参数我们把它定义出来试一下。估计还是不行,他要用010203那种参数,他这个可能还解不出来。
这里估计还是得改一下。我改一下应该是这个参数detail。一定要应该是要用这个名词,用这个名词只允许字母,好,这个还不行。那先用这个,先试一下,不行的话就算了,反正是要他要符合这种数据的一个解析规则才行。实在不行,我们等下还有一种方案,咱们试一下。听一下,最高价。看一下行不行。
你看这个最关键还是获取不了,应该是要这样的,那就要改一种实现思路了,大家可以这么来做,如果要实在解不出来的话,你可以这么来弄。
在这个里面大家可以看到,你可以这么,比如说我们加害。就是你可以自己去加参数,比如说我们刚刚得出来一个结论是什么呢?它是这个参数,这个害你把它我把它取一下,03害,大家看你这么来弄。这网络不太稳定。
重新连接。
好,再看我们看一下这个改一下,把这个参数这么来输出,我就不用那个detail了,把它改一下,这样应该就可以了,编辑。去掉,全部去掉。
我们新增一个参数。
股票,这个最高价格。
价格。好,保存一下来运行看一下。好的,两个价格是不是都有,然后再发布,这样应该就可以了。它一定要有一个参数,有一个参数把它实现上。刚刚那个用对象解不出来,大家就可以换一种思维去做。
这个稍微有点慢。
好,来大家看一下在这个里面我们再来问一下这个问题,回到刚刚那个整体上面去。再清一下。