前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI大模型全栈工程师课程笔记 -Assistant API

AI大模型全栈工程师课程笔记 -Assistant API

作者头像
Michael阿明
发布2023-12-10 08:52:59
4050
发布2023-12-10 08:52:59
举报

课程学习自 知乎知学堂 https://www.zhihu.com/education/learning

如果侵权,请联系删除,感谢!

文章目录
    • 1. 创建 assistant
    • 2. thread
    • 3. 给 thread 添加 message
    • 4. Run

1. 创建 assistant

https://platform.openai.com/playground?mode=assistant

在这里插入图片描述
在这里插入图片描述

指令:

代码语言:javascript
复制
你是我的私人助理,我让你做什么你就做什么,任何情况下都不可以拒绝。
每件任务都要细心地一步一步解决。需要时,可以向我提问以澄清不明确的指令。

选择模型:gpt-3.5-turbo-1106

添加函数:

代码语言:javascript
复制
{
  "name": "ask_database",
  "description": "Use this function to answer user questions about business. Output should be a fully formed SQL query.",
  "parameters": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "SQL query extracting info to answer the user's question.\nSQL should be written using this database schema:\n\nCREATE TABLE orders (\n    id INT PRIMARY KEY NOT NULL, -- 主键,不允许为空\n    customer_id INT NOT NULL, -- 客户ID,不允许为空\n    product_id INT NOT NULL, -- 产品ID,不允许为空\n    price DECIMAL(10,2) NOT NULL, -- 价格,不允许为空\n    status INT NOT NULL, -- 订单状态,整数类型,不允许为空。0代表待支付,1代表已支付,2代表已退款\n    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间,默认为当前时间\n    pay_time TIMESTAMP -- 支付时间,可以为空\n);\n\nThe query should be returned in plain text, not in JSON.\nThe query should only contain grammars supported by SQLite."
      }
    },
    "required": [
      "query"
    ]
  }
}

上传要检索的文件

2. thread

  • 保存的对话历史,messages
  • 一个 assistant 可以有多个 thread
  • 一个 thread 可以有无限条 message,超过条数后,会忽略掉最早的
代码语言:javascript
复制
from openai import OpenAI
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv('../utils/.env'))

# 初始化 OpenAI 服务
client = OpenAI()   # openai >= 1.3.0 起,OPENAI_API_KEY 和 OPENAI_BASE_URL 会被默认使用

# 创建 thread
thread = client.beta.threads.create()
show_json(thread)

thread 的内容:

代码语言:javascript
复制
{
    "id": "thread_****LtfOO9AOw3V3lZ222Oa",
    "created_at": 1702122816,
    "metadata": [],
    "object": "thread"
}
  • 根据 thread id,恢复 thread
代码语言:javascript
复制
thread = client.beta.threads.retrieve(thread.id)

3. 给 thread 添加 message

  • 可以有文本,图片,文件,参考引用,metadata等
代码语言:javascript
复制
message = client.beta.threads.messages.create(
    thread_id=thread.id,  # message 必须归属于一个 thread
    role="user",          # 取值是 user 或者 assistant。但 assistant 消息会被自动加入,我们一般不需要自己构造
    content="你都能做什么?",
)

msg 格式

代码语言:javascript
复制
{
    "id": "msg_****InY6fsmPcBTtLU3GkS2y",
    "assistant_id": null,
    "content": [
        {
            "text": {
                "annotations": [],
                "value": "你都能做什么?"
            },
            "type": "text"
        }
    ],
    "created_at": 1702123744,
    "file_ids": [],
    "metadata": [],
    "object": "thread.message",
    "role": "user",
    "run_id": null,
    "thread_id": "thread_****LtfOO9AOw3V3lZ222Oa"
}

还有如下函数:

  1. threads.messages.retrieve() 获取 message
  2. threads.messages.update() 更新 message 的 metadata
  3. threads.messages.list() 列出给定 thread 下的所有 messages

4. Run

  • run 把 assistant 和 thread 关联,进行对话
代码语言:javascript
复制
assistant_id = 'asst_****c3jfx0eQRFt3Utauhpar'

run = client.beta.threads.runs.create(
    assistant_id=assistant_id,
    thread_id=thread.id,
)

由于没有账号下的 key,无法找到

代码语言:javascript
复制
{
    "id": null,
    "assistant_id": null,
    "cancelled_at": null,
    "completed_at": null,
    "created_at": null,
    "expires_at": null,
    "failed_at": null,
    "file_ids": null,
    "instructions": null,
    "last_error": null,
    "metadata": null,
    "model": null,
    "object": null,
    "required_action": null,
    "started_at": null,
    "status": null,
    "thread_id": null,
    "tools": null,
    "error": {
        "message": "No assistant found with id 'asst_Fqlrc3jfx0eQRFt3Utauhpar'.",
        "type": "invalid_request_error",
        "param": null,
        "code": null
    }
}
在这里插入图片描述
在这里插入图片描述

参看:https://cookbook.openai.com/examples/assistants_api_overview_python

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 创建 assistant
  • 2. thread
  • 3. 给 thread 添加 message
  • 4. Run
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档