深入探讨GPTs和AI Assistant( 六 )


模型支持并发调用,参考 parallel function calling
如下的返回结果,可以看到 required_action是需要提交的函数调用的函数名和参数 。这里面可以 获取 call id , 用于提交使用函数结果使用 。
{ "id": "run_3HV7rrQsagiqZmYynKwEdcxS", "object": "thread.run", "assistant_id": "asst_rEEOF3OGMan2ChvEALwTQakP", "thread_id": "thread_dXgWKGf8Cb7md8p0wKiMDGKc", "status": "requires_action", "required_action": { "type": "submit_tool_outputs", "submit_tool_outputs": { "tool_calls": [ { "id": "call_Vt5AqcWr8QsRTNGv4cDIpsmA", # 返回的call id,用于提交使用 "type": "function", "function": { "name": "getCurrentWeather", "arguments": "{"location":"San Francisco"}" } }, { "id": "call_45y0df8230430n34f8saa", "type": "function", "function": { "name": "getNickname", "arguments": "{"location":"Los Angeles"}" } } ] } }, ... 提交函数结果
需要对于每个函数都进行 提交函数输出 ,对于每个输出的结果需要提交给哪个函数,则是对应了函数调用返回的 required_action中的 tool_call_id 。
具体的代码如下 。
run = client.beta.threads.runs.submit_tool_outputs( thread_id=thread.id, # 对话id run_id=run.id, # 执行id tool_outputs=[ { "tool_call_id": call_ids[0], # call id "output": "22C", }, { "tool_call_id": call_ids[1], "output": "LA", }, ] ) LangChain 集成 Assistant API
截止2023-11-15日,LangChain 集成API 还只是一个实验版本 langchain-experimental,未有正式版本 。所以需要使用的读者,可以使用如下版本:
!pip install -U -q "langchain==0.0.331rc2" langchain-experimental "openai>=1.1" import os os.environ["OPENAI_API_KEY"] = 'YOUR OPENAI KEY' # !pip install -U -q "langchain==0.0.331rc2" langchain-experimental "openai>=1.1" from langchain_experimental.openai_assistant import OpenAIAssistantRunnable import openai as client file = client.files.create( file=open("TEST.csv", "rb"), purpose='assistants' ) interpreter_assistant = OpenAIAssistantRunnable.create_assistant( name="data analysis assistant", instructions="You are a profession data analysis. When asked a question, write and run Python code to answer the question.", tools=[{"type": "code_interpreter"}], file_ids=[file.id], model="gpt-4" ) output = interpreter_assistant.invoke( {"content": "最近2周活跃表现最突出的是哪一天?", "file_ids": [file.id] }) output

深入探讨GPTs和AI Assistant

文章插图
其他更多的内容可以参考:langchain cookbook
使用curl调用 Assistant API
具体可以参考如下的 Jupyter Notebook
Capabilities 和 Actions
我们在创建 GPTs 的时候,可以给GPTs 提供多种不同的能力
  1. Knowledge:知识库
  2. Capabilities(内置能力):包含了 OpenAI 提供的基础能力,主要包含了,这些能力都是最重要最基础的 , 所以OpenAI选择自己做 。
    1. Web Browsing(网络浏览能力)
    2. DALLE Image Generation(图片生成能力)
    3. Code Interpreter(代码能力)
  3. Actions:动作,指的是GPTs的其他能力,类似于额外的能力插件,OpenAI不可能帮用户把所有的业务需求的能力都提供了额,所以它提供了一个接口 , 方便用户可以使用规定的接口协议,给GPT提供额外的能力 。目前Actions 采用的是OpenAPI的接口协议,方便GPT调用外部的API 。具体的使用可以参考下面教程 。
GPTs与Assistant API的比较与差异虽然 GPTs 和 Assistant API 都是为了创建自定义的 AI 助手创建的,到那时两者的方法和使用的场景不同 。reference
GPTs 有着简单易用的前端交互 , 可以很快速地方便小白用户快速搭建 AI 助手,可以快速地验证方案和效果,并且可以很快速的在 GPTs 的商店中进行分享 。
【深入探讨GPTs和AI Assistant】然而 ,  Assistant API 需要通过API的方式进行操作,虽然可以使用 Assistant API 的 Assistant playground 进行配置使用,但是其主要的目的还是为开发者提供一个API 方式,方便开发者可以在在自己的应用中 , 快速集成这些能力 。
参考资料
  1. YouTube:OpenAI Assistants API 极简入门(附LangChain集成)

  2. 推荐阅读