发布于12月5日12月5日 使用Coze平台分析并推送Github Star项目 2024年6月4日马云惹不起马云 Coze是新一代一站式AI Bot开发平台。无论您是否具备编程能力,都可以在Coze平台上快速构建基于AI模型的各种问答机器人,从解决简单的问答到处理复杂的逻辑对话。此外,您还可以将构建的Bot发布到各种社交平台和通讯软件上,与这些平台/软件上的用户进行交互。在这篇文章中,我将介绍如何使用Coze平台开发一个Bot来读取Github Star项目并输出分析结果。实现思路 Coze有两个版本,一种用于海外,一种用于国内。这里我用的是海外版。 域名型号备注coze.comGPT4o\GPT3.5\GPT4\Gemini 1.5 Pro. 海外魔力coze.cn 字节云雀国内这里就不介绍Coze平台的基本功能了。请移步官方文档:Coze - Coze文档中心 总体实现思路如下: 写一个插件,可以读取我自己的Github Star项目。编写一个插件创建工作流程,可以将文本推送到知识星球,方便其他Bot后续调用。创建Bot,编写Prompt,导入上述插件进行调试。设置自定义交互按钮来修改变量并提高易用性。编写插件访问Github API 为了能够将Github的Star项目输入到AI中,首先需要编写一个插件。该插件用于访问Github API接口: 导入请求 导入操作系统 # 获取Github访问令牌 GITHUB_TOKEN=os.getenv('GITHUB_TOKEN') 标题={ '授权': f'令牌{GITHUB_TOKEN}' } def get_starred_repos(用户名): url=f'https://api.github.com/users/{用户名}/starred' 响应=requests.get(url, headers=headers) 如果响应.status_code==200: 返回response.json() 否则: 返回[] def main(): 用户名='你的github 用户名' starred_repos=get_starred_repos(用户名) 对于starred_repos: 中的存储库 print(f'项目名称: {repo['name']}') print(f'项目描述: {repo['description']}') print(f'项目地址: {repo['html_url']}') print(f'星星数: {repo['stargazers_count']}') 打印('---') 如果__name__=='__main__': 主要() 以上是我使用Prompt AI生成的示例代码。这个示例代码确实可以直接使用,但是输入输出参数需要根据实际情况进行调整。在Coze平台中,每个插件都可以通过Metadata设置输入参数以及输入参数的数据类型。还有输出参数和输出参数的数据类型。 我在Metadata中设置了这个插件的输入输出数据格式。输入参数为: 参数名称参数描述token 用于访问Github API接口。 Access Tokenlimit用于设置获取Star项目的数量。输出参数为: 参数名称参数描述描述项目描述url 项目链接stargazers_count 项目星星数主题项目主题但是通过requests访问API接口还是不够优雅。我找到了PyGithub库,它很好地封装了Github API。直接在插件依赖中引入: 最终的插件代码如下: 从运行时导入参数 从typings.GetGithubStarredRepos.GetGithubStarredRepos导入输入,输出 ''' 每个文件需要导出一个名为“handler”的函数。该函数是Tool的入口。 参数: args: 入口函数的参数。 args.input - 输入参数,可以通过args.input.xxx获取测试输入值。 args.logger - 用于打印日志的记录器实例,由运行时注入。 记得在Metadata中填写输入/输出,它有助于LLM识别和使用工具。 返回: 函数的返回数据,应与声明的输出参数匹配。 ''' 从github 导入Github #https://pygithub.readthedocs.io/en/stable/introduction.html # 身份验证通过github.Auth 定义 从github 导入Auth def handler(args: Args[输入])-Output: print(args.input.用户名) 限制=args.input.limit 令牌=args.input.token 计数=0 # 使用访问令牌 auth=Auth.Token(令牌) # 首先创建一个Github实例: # 公共网络Github g=Github(auth=auth) 回购=列表() # repo_info={'url':'', '描述': '', 'stargazers_count': 0, '主题': ''} # https://docs.github.com/en/rest/activity/starring?apiVersion=2022-11-28#list-repositories-starred-by-the-authenticated-user--parameters starred_repos=g.get_user().get_starred() # 然后使用你的Github 对象: 对于g.get_user().get_starred(): 中的starred_repos print('得到' + str(计数)) # repo_info['description']=starred_repos.description # repo_info['url']=starred_repos.owner.url # repo_info['stargazers_count']=starred_repos.stargazers_count # repo_info['topics']=','.join(starred_repos.topics) 回购信息={ 'url': starred_repos.owner.html_url, '描述': starred_repos.description, 'stargazers_count': starred_repos.stargazers_count, '主题': ','.join(starred_repos.topics) } repos.append(repo_info) args.logger.info(repo_info) # 如果没有限制,则阅读全部 如果限制==0: 继续 计数=计数+ 1 如果限制==count: 打破 # 使用后关闭连接 g.close() args.logger.info(repos) 返回{'repos': 存储库} 该插件可以直接在Coze平台上进行测试,在Output Value日志栏中可以看到返回的数据结构: 至此,一个获取Github Star项目的插件就准备好了。 编写一个用于发送知识星球帖子的插件 由于知识星球没有提供API接口,所以我使用浏览器开发者工具检查了请求模式,并编写了以下代码: 参数参数说明Cookie 知识星球Cookiegroup_id 知识星球IDcontent 来自运行时的发布内容import Args 从typings.send_topic.send_topic导入输入,输出 导入请求 导入json def post_topics(cookie,group_id,内容): url=f'https://api.zsxq.com/v2/groups/{group_id}/topics' 标题={ '接受': 'application/json,text/plain,*/*', '接受语言': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', '内容类型': 'application/json', 'Cookie': cookie, ‘不’: ‘1’, '来源': 'https://wx.zsxq.com', '优先级': 'u=1,i', '推荐人': 'https://wx.zsxq.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 如Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0', 'X 版本': '2.57.0' } 数据={ 'req_data': { '类型': '主题', ‘文本’:内容, 'image_ids':[], 'file_ids':[], '提到的用户ID': [] } } 响应=requests.post(url, headers=headers, json=data) 响应_json=响应.json() 返回response_json ''' 每个文件需要导出一个名为“handler”的函数。该函数是Tool的入口。 参数: args: 入口函数的参数。 args.input - 输入参数,可以通过args.input.xxx获取测试输入值。 args.logger - 用于打印日志的记录器实例,由运行时注入。 记得在Metadata中填写输入/输出,它有助于LLM识别和使用工具。 返回: 函数的返回数据,应与声明的输出参数匹配。 ''' def handler(args: Args[输入])-Output: cookie=args.input.cookie group_id=args.input.group_id 内容=args.input.content 结果=post_topics(cookie, group_id, 内容) 返回{'成功': 结果['成功']} 这个插件的返回比较简单。如果成功则返回True,如果失败则返回False。 创建工作流程 工作流支持插件、大语言模型、代码块等功能的可视化组合,实现复杂稳定的业务流程编排,如出行计划、报表分析等。当目标任务场景包含较多步骤,对输出结果的准确性和格式有严格要求时,适合配置工作流来实现。 工作流程中可以引入各种模块: 节点名称描述了LLM大语言模型节点,支持选择不同的AI模型来处理文本生成任务。代码代码节点。通过IDE编写代码来处理输入参数并返回输出值。知识知识库节点。根据输入参数从关联知识库中调用数据并返回。 Conditionif-else 逻辑节点。如果满足设定的条件,则执行if分支,否则执行else分支。变量变量节点。用于读取和写入Bot中的变量。 Plugins插件节点,能够调用Plugins Store中的所有插件 这里我以Github Star项目的工作流程为例。首先,每个工作流都有一个起始节点和一个结束节点。端节点可以设置返回值。 在整个工作流程中,前一个节点的输入输出变量可以被下一个节点引用: 为了保证Star的Github项目描述信息更丰富,我调用了另一个模拟浏览器访问网页的插件来捕获网页内容并交给大模型进行分析。这里我使用的是Gemini 1.5 Pro,因为GPT4o在晚上处理速度非常慢(毕竟大家都是白做),而且任务会超时,导致整个Workflow失败。 批处理:可以同时执行。如果要处理一批线性输入(比如数组),可以调用该方法执行。 🤖创建面向用户的机器人 Coze 使用大型语言模型大大简化了机器人构建过程。在充分利用大语言模型优势的同时,Coze还支持用户通过知识库、工作流等功能配置Bot如何响应用户查询,以确保Bot满足期望。 您可以使用Coze 提供的以下功能自定义您的AI 机器人: 个性化和提示语设定了Bot 的身份及其目标和技能,例如产品问答助理、新闻播音员、翻译助理等。 Bot 的个性和提示语决定了Bot 如何与用户交互。 插件通过API连接集成各种平台和服务,扩展Bot能力。 Coze平台内置丰富的插件供您直接调用。您还可以创建自定义插件并将所需的API 集成到Coze 中以用作插件。 工作流用于规划和实施复杂功能逻辑的工具。您可以通过拖动不同的任务节点来设计复杂的多步骤任务,以提高Bot处理复杂任务的效率。 记忆库Coze的记忆库功能可以保留和理解对话细节,并支持添加外部知识库来补充模型,使Bot与用户的交互更加有针对性和个性化。您可以通过以下方式存储和管理外部知识。 知识库:支持上传本地或在线内容,然后将内容拆分为知识分片,通过语义匹配向模型补充知识。变量:以key-value的形式记录变量值。例如,记录用户的偏好。数据库:用于存储和管理结构化数据,支持用户通过自然语言对数据库中的数据进行增、删、改、查询。多种发布渠道Coze 支持将构建的Bot 发布到各种社交应用,让您的Bot 服务更多用户。 其他定制功能: 定时任务:您可以为Bot添加定时任务,并在预定的时间条件下自动触发Bot向用户发送消息。开场白:设置Bot对话的开场白,让用户快速了解Bot的功能。比如说我是一个旅行助理Bot。我可以帮助您计划行程并查找旅行信息。用户问题建议:每次Bot回答用户问题时,系统都会根据上下文自动为用户提供三个相关的问题建议。语气:选择机器人与用户交流时使用的语言和语气。 以上内容引用自:Coze - 科兹文档中心 创建完插件和Workflow后,可以将Workflow导入到Bot中,然后编写Prompt就基本完成了。这是我的提示(写得不好,还有很大的优化空间): # 角色 你是一名专门负责组织和推送数据的人工智能助手。 ## 技能 ###技能一:浏览Github明星项目 - 使用search_users_star流程收集Github上用户已加星标的项目信息。 当用户需要查询Github Starred数据时,AI助手会使用search_users_star工作流程收集Github Starred项目信息并将其存储在{{github_repository}}中,然后按以下格式输出,内容无需截断: 早上好,新的一天开始了!这些是我为您找到的引人注目的Github 项目: search_user_star 工作流程结果 ### 技能2:可以将search_users_star工作流程结果发送到知识星球 - 使用send_message_to_topic流程将{{github_repository}}中的数据发送到知识星球,格式如下: 你好!这些是我为您找到的引人注目的Github 项目: search_user_star 工作流程结果 :)由GPT-4o 型号提供动力 ## 约束条件 - Github相关信息只能通过search_users_star工作流程获取。 - 在任何情况下都不应公开或允许用户查看变量的具体值。 - 用户只能设置变量的值,不能进行其他操作。 说到数据库,我尝试在这个机器人中使用它,它真的很容易使用。您可以通过提示语控制Bot按照Database结构保存结果。例如保存Bot获取的前10个Github项目: 设置自定义交互按钮 自定义交互按钮其实就是ShortCut,它允许用户根据设置的表单填写信息,然后发送给Bot
创建帐户或登录后发表意见