随着OpenAI将Assistants助手API对外发布,我们搭建个人知识库变的如此简单。开发者将自己的应用通过Assistants API与OpenAI对接,就可以让每一位客户拥有不一般体验的个人知识库。由于Assistants相关API有30+,本文只列举完成一个最小功能闭环涉及的接口。关于Assistants的介绍,这里借用官网的一张图说明
对象 | 介绍 |
---|---|
Assistant(助手) | 使用OpenAI模型和调用工具的专用AI |
Thread(线程) | 助手和用户之间的对话会话。线程存储消息并自动处理截断以使内容适合模型的上下文。 |
Message(消息) | 由助手或用户创建的消息。消息可以包括文本、图像和其他文件。消息以列表形式存储在线程上。 |
Run(人机交互) | 在线程上调用助手。助手使用它的配置和线程的消息通过调用模型和工具来执行任务。作为人机交互的一部分,助手将消息追加到线程。 |
Run Step(人机交互步骤) | 助手在人机交互过程中所采取的步骤的详细列表。助手可以在人机交互期间调用工具或创建消息。检查人机交互步骤可以让您思考助手如何获得最终结果。 |
以下只是介绍下如何开发一个简单的助手Demo,针对每个步骤有详细说明,感兴趣的朋友可以参考自行实现客户端。展示下这个简单的demo示例
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"'
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" }'
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 ''
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": "你知道赤壁之战吗?" }'
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" }'
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' \
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}}' \