首页 > 其他分享 >使用OpenAI Assistants三分钟搭建个人知识库AI助手网站

使用OpenAI Assistants三分钟搭建个人知识库AI助手网站

时间:2023-11-18 10:33:22浏览次数:34  
标签:线程 v1 header AI -- 助手 OpenAI Assistants

Assistants介绍        

        随着OpenAI将Assistants助手API对外发布,我们搭建个人知识库变的如此简单。开发者将自己的应用通过Assistants API与OpenAI对接,就可以让每一位客户拥有不一般体验的个人知识库。由于Assistants相关API有30+,本文只列举完成一个最小功能闭环涉及的接口。关于Assistants的介绍,这里借用官网的一张图说明 file

对象 介绍
Assistant(助手) 使用OpenAI模型和调用工具的专用AI
Thread(线程) 助手和用户之间的对话会话。线程存储消息并自动处理截断以使内容适合模型的上下文。
Message(消息) 由助手或用户创建的消息。消息可以包括文本、图像和其他文件。消息以列表形式存储在线程上。
Run(人机交互) 在线程上调用助手。助手使用它的配置和线程的消息通过调用模型和工具来执行任务。作为人机交互的一部分,助手将消息追加到线程。
Run Step(人机交互步骤) 助手在人机交互过程中所采取的步骤的详细列表。助手可以在人机交互期间调用工具或创建消息。检查人机交互步骤可以让您思考助手如何获得最终结果。

Assistants Demo开发

        以下只是介绍下如何开发一个简单的助手Demo,针对每个步骤有详细说明,感兴趣的朋友可以参考自行实现客户端。展示下这个简单的demo示例 file

  • 1.上传知识文件(File),需要注意purpose参数需要设置为assistants,表示该文件用于助手。目前OpenAI官方要求单个文件不能超过512M。支持txt、pdf、docx、pptx、xlsx、csv、xml、json、java、c、python常见文件格式,并要求编码格式为utf-8、utf-16、ascii其中的一种,详情请查询官网助手关于支持的文件类型的描述
curl --location --request POST 'https://gateway.ai.cloudflare.com/v1/2a2*****************60/******/openai/files' \
--header 'Authorization: Bearer sk-123' \
--form 'purpose="assistants"' \
--form 'file=@"C:\\Users\\admin\\Desktop\\三国演义(白话文版).txt"'

file

  • 2.创建助手(Assistants),创建助手时需要指定助手名称、提示词、设置需要使用的工具、关联的文件(目前每个助手限制最多20个文件,且单个文件不能超过2000000 tokens,如果文件比较多,建议合并后上传)、以及使用的模型(本文选择gpt-4-1106-preview)。本次示例中助手只开启了工具中的检索(Retrieval)功能,代码解释器(Code interpreter)和函数(Functions)未用到,后面有机会再聊。
curl --location --request POST 'https://gateway.ai.cloudflare.com/v1/2a26****************d560/*****/openai/assistants' \
--header 'Authorization: {{secretKey}}' \
--header 'OpenAI-Beta: assistants=v1' \
--header 'Content-Type: application/json' \
--data-raw '{
    "instructions": "您将担任XY的高级内容分析师。XY是一位在小说创作领域具有丰富经验的文学家。你的任务是基于XY上传的小说,回答用户问题,并提供深入见解。任务说明:1.当用户提问时,仔细分析问题并基于XY上传的小说给出回答;2.如果回答来自于上传的小说,请提供小说的文件名称;3.如果上传的小说中没有能回答用户问题的参考内容,请直接回答\"我不知道\"。",
    "name": "内容分析师",
    "tools": [
        {
            "type": "retrieval"
        }
    ],
    "file_ids": [
        "file-0CocxG465dfsIUd4MKx0O8iG"
    ],
    "model": "gpt-4-1106-preview"
}'

file

  • 3.创建线程(Thread),您可以将线程理解为用户与助手对话的上下文,它会记录用户与助手相互发送的message。
curl --location --request POST 'https://gateway.ai.cloudflare.com/v1/2a26**************d560/*****/openai/threads' \
--header 'Authorization: {{secretKey}}' \
--header 'OpenAI-Beta: assistants=v1' \
--header 'Content-Type: application/json' \
--data-raw ''

file

  • 4.向助手发送信息(send message),线程创建好之后,意味着当前用户与助手对话的上下文已经建立完毕,用户可以想助手发送消息了。由于线程会管理用户与助手之间相互发送的message,所以每次用户向助手发送消息时,只需要发送最新的message,而不必携带用户发送的历史消息,这样逻辑更简单,也节省tokens。
curl --location --request POST 'https://gateway.ai.cloudflare.com/v1/2a2*******************d560/******/openai/threads/thread_mAO9Gqfg4fdfgBVoMxOLXn/messages' \
--header 'OpenAI-Beta: assistants=v1' \
--header 'Authorization: {{secretKey}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "role": "user",
    "content": "你知道赤壁之战吗?"
}'

file

  • 5.执行人机交互(Run),消息发送完毕,是时候让助手干活了。关于Run的执行,里面细节比较多,后面有机会聊。
curl --location --request POST 'https://gateway.ai.cloudflare.com/v1/2a265********************560/*****/openai/threads/thread_mAO9GqdfgdsfgerVoMxOLXn/runs' \
--header 'Authorization: {{secretKey}}' \
--header 'OpenAI-Beta: assistants=v1' \
--header 'Content-Type: application/json' \
--data-raw '{
    "assistant_id": "asst_F4fnsdfgds42w9yJr2vZieb"
}'

file

  • 6.查询指定线程(Thread)下特定人机交互(Run)的执行状态(status)。人机交互(Run)任务提交后,我们需要实时关注任务执行状态,status状态包括:queued、 in_progress、requires_action、cancelling、cancelled、failed、completed、expired。为了使Run状态是最新的,你需要定时轮询Run对象获取最新的状态。需要注意的是,如果Run处于completed状态,标识当前人机交互(Run)已经执行完成,可以调用消息接口查询助手返回的内容了。
curl --location --request GET 'https://gateway.ai.cloudflare.com/v1/2a26*******************d560/*****/openai/threads/thread_mAO9Gqmh4356fd7KBVoMxOLXn/runs/run_Nkx07ebg55LmUyJgx9' \
--header 'Authorization: {{secretKey}}' \
--header 'OpenAI-Beta: assistants=v1' \

file file

  • 7.查询指定线程(Thread)的消息列表,返回的消息列表默认按时间降序排列,limit最大支持100。需要说明的是:Thread中可以存储的message数量没有限制,但是一旦message的大小超过模型的上下文窗口限制,Thread将尝试包含尽可能多的适合上下文窗口的message并删除最旧的message。
curl --location --request GET 'https://gateway.ai.cloudflare.com/v1/2a2*********************d560/******/openai/threads/thread_mAO9Gqm456fdYo7KBVoMxOLXn/messages?limit=20' \
--header 'OpenAI-Beta: assistants=v1' \
--header 'Authorization: {{secretKey}}' \

file

  • 8.重复步骤4、5、6、7,即可实现用户与助手的多轮对话。本文中只介绍了接口调用的时序,至于具体实现有兴趣的自己实现客户端,这里就不提供了。

标签:线程,v1,header,AI,--,助手,OpenAI,Assistants
From: https://blog.51cto.com/xfishup/8459828

相关文章

  • java智慧工地AI视频管理平台源码
    智慧工地是指以物联网、移动互联网技术为基础,充分应用人工智能等信息技术,通过AI赋能建筑行业,对住建项目内人员、车辆、安全、设备、材料等进行智能化管理,实现工地现场生产作业协调、智能处理和科学管理。智慧工地的核心是以一种“更智慧”的方法来改进工程各干系组织和岗位人员相互......
  • django 信号第一个 raise ValidationError出现后,还会继续下一个if吗
    在你提供的代码片段中,如果第一个raiseValidationError触发,会抛出异常并停止执行当前函数或代码块。这是因为异常(Exception)会中断正常的代码流程,将控制权传递给调用堆栈中的第一个能够捕获该异常的地方。所以,如果v_lot_no为空,第一个raiseValidationError被触发后,后续的if......
  • 《Deep learning for fine-grained image analysis: A survey》阅读笔记
    论文标题《Deeplearningforfine-grainedimageanalysis:Asurvey》作者魏秀参,旷世研究院初读摘要细粒度图像分析(FGIA)的任务是分析从属类别的视觉对象。细粒度性质引起的类间小变化和类内大变化使其成为一个具有挑战性的问题。本文旨在系统地调查基于深度学习的......
  • cf1864C. Divisor Chain
    https://codeforces.com/contest/1864/problem/C思维越来越僵化了假如\(n=2^k\),直接每次/2就行。否则,我们可以考虑如何转化成上面的情况令\(n=2^kx\),那么我们显然可以转移到\(n=2^k(x-1)\),因为x是奇数,所以2的次幂会加一,最后变成\(2^k\)次方的时候,每个数最多出现两次,正好符合......
  • hudson.plugins.git.GitException: Failed to delete workspace
    持续集成环境(git+gitlab+jenkins+pipeline+maven+harbor+docker+k8s)之前都是ok的,突然就报错了:CloningtheremoteGitrepositoryCloningrepositorygit@192.168.117.180:qzcsbj/gift.gitERROR:Failedtocleantheworkspacejenkins.util.io.CompositeIOExc......
  • AI试用:ChatGPT-画旗袍美女效果
    AI试用:ChatGPT-画旗袍美女效果Designby拓云智能强大的绘画工具,让您能够将灵感转化为真实的艺术作品。不论您是喜欢传统绘画还是数字绘画,ChatGPT都能够满足您的需求。它提供了各种绘画工具和特效,让您能够自由发挥创意,创作出独一无二的艺术作品。......
  • 燧机AI盒子设备使用体会
    项目急用买了这款设备,个人使用心得。优点:1、网站做的挺不错、散热做的不错。缺点:1、价格贵,识别率一般。2、估计是因为硬件算力低,图像压缩很模糊,后来发现是使用瑞芯微方案。3、除了支持三个事件接口,基本上不支持任何二次开发。......
  • SAP Commerce Cloud 的 DataIsolation flag
    SAPCommerceCloudBack-Office里针对某个BaseSite可以编辑Dataisolation的flag,类型为Boolean.这个标志位决定是否针对site激活Dataisolation功能。SAP的官方帮助文档。SAPCommerceCloud支持多个站点以及这些站点内的数据隔离。可以管理每个站点的专用员......
  • 焕颜AI DeepfaceKit 换脸变声教程
    下载安装1.软件下载地址https://exluyyho90p.feishu.cn/docx/TRBWdOfkIoFMeYxZiDZc7k62nud2.打开软件3.进入软件首页使用须知:软件集成AI实时换脸、克隆声音、背景替换、实时美颜、一键遮罩、视频图片等功能传统的Swapface、Deepface....这类软件对电脑配置要求很高,不然会非常的卡顿......
  • 如何解决本地开发调用OpenAI接口的问题
    在开发过程中,如果需要在本地调用openAI接口进行开发调试,一般主要是通过以下两种方式:直连和代理转发。1.直连1.简单粗暴,懂的都懂2.代理转发代理转发又有两种类型,使用第三方代理和自建代理两种,下面将分别举例说明2.1.第三方AI网关1.注册Cloudflare,开通AI网关功能(Beta......