实测_GPT_Assistant

1 资源

2 Assistant 功能

  • 代码解释器
  • 检索功能
  • 函数调用

3 操作步骤

(较之前的api略复杂)

  • 升级 openai api
shell 复制代码
pip install --upgrade openai
  • 创建 Assistant,定义其 instruction 并选择模型,如果需要,设置代码解释器、检索和函数调用功能。
python 复制代码
assistant = client.beta.assistants.create(
    name="Math Tutor",
    instructions="You are a personal math tutor. Write and run code to answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview"
)
  • 开始对话时,创建一个线程。
python 复制代码
thread = client.beta.threads.create()
  • 随着用户提出问题,向线程添加消息。
python 复制代码
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)
  • 在线程上运行助手以触发回应,此时自动调用相关的工具。
python 复制代码
run = client.beta.threads.runs.create(
  thread_id=thread.id,
  assistant_id=assistant.id,
  instructions="Please address the user as Jane Doe. The user has a premium account."
)
  • 查询状态
python 复制代码
run = client.beta.threads.runs.retrieve(
  thread_id=thread.id,
  run_id=run.id
)
  • 显示消息(收/发)
python 复制代码
messages = client.beta.threads.messages.list(
  thread_id=thread.id
)
  • 注意
    • 如果对 Python 程序不熟悉,可以在 Playground 界面中操作

4 实测:文档解析

上传了一个 markdown 文件,希望提取出子标题下的内容,使用 GPT4 Turbo 模型。

4.1 测试一:一次提问多个问题

  • 数据:上传 XXX 合同文档(人名脱敏),约 7K 左右,2K 汉字。
  • 问题:请从上传的文档中提取核心项 'aaa','bbb','ccc','ddd',使用原文回答。
  • 运行结果:
    • 执行时间:该次提问约 30s 返回(不包含上传文档及解析时间)
    • 返回结果:返回结构基本是对的,返回的核心项内容无法直接使用:不是原文,是经过提炼的内容,50-60% 意思对,但内容对不上,有点像"复述课文"。

4.2 测试二:单独提问(测试两次不同项)

  • 数据:同上
  • 回答:请在文中找 "aaa" 对应的数据块,用原文回答,不要加其它内容。
  • 运行结果:
    • 回复内容:219 中文字符 0.09,190 中文字符 0.14
    • 单次返回时间约 10-15s 左右
    • 其中一个回答基本是对的;另一个文本是对的,但没包含数据表

(具体测试结果见 GPT_Assistant_测试附图,涉及私有数据,不便公开)

5 分析讨论

(以下均为个人看法,只测试了少量内容,不一定正确)

5.1 合并提问

  • 如果一次问一个问题,正确率比较高,可能由于每次都需要把检索到的内容也传给模型,所以总计 token 计费大于问题和答案之和。
  • 同时提问多个问题正确率低,一方面可能是模型生成问题,也可能由于不同答案位于不同数据块内,无法一次送入模型。

5.2 价格

  • 我的每次检索数据相关提问至少在 0.1$ 左右,可能由于先检索,然后把检索的内容和问题一起送入 GPT4-Turbo 计算,这样每次提问,至少包含问题、答案和一个检索块的大小(如 512token),而且单块可能还不止 512token,也可能不止一个备选块。
  • 目前在测试阶段,上传文档时解析好像没算钱(Embedding 也比较便宜)存储和检索也没算钱。
  • 实测费用感觉明显高于问题和答案的累计,可能是由于 Assistant 默认记忆历史对话,并将历史对话代入当前计算,也被计入了 token。因此,在使用 playground 或程序调用时,如果不需要考虑历史对话,注意点击右上角 Clear 清除历史对话。

5.3 其它发现

  • 不开通 GPT4 20$ 包月的情况下,也可以测试 GPT4-Turbo,可能是由于第一个月免费。具体按 GPT4-Turbo 调用计费(价格约为 GPT3.5 的 10 倍)。
  • assistant 不仅支持 GPT4 Turbo,还支持 GPT3.5 Turbo (gpt-3.5-turbo-1106, gpt-4-1106-preview)

5.4 个人感觉

  • 关键字最好与原文一致,对于某些专业领域,模型对近义词的理解能力略差。
  • "用原文作答"或者"在原文中定位"对于解决幻觉问题比较重要,个人感觉效果一般,价格小贵。
  • 在不用原文作答时,如果是判断或者选择题,还能比较客观地评价;对于开放性问题,用户很难判断回答是否准确。
  • 用它解析局部的问题还行,整个方案都交给他可能还是不太行。
  • 这几个月像 langchain,llamaindex,GPT 学术已经把周边的内容做得很细化了,OPENAI 的 assistant 用起来比较省事,但效果未必更好。
相关推荐
pp-周子晗(努力赶上课程进度版)几秒前
【MySQL】视图、用户管理、MySQL使用C\C++连接
数据库·mysql
斯特凡今天也很帅9 分钟前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
超级小忍1 小时前
如何配置 MySQL 允许远程连接
数据库·mysql·adb
吹牛不交税2 小时前
sqlsugar WhereIF条件的大于等于和等于查出来的坑
数据库·mysql
hshpy2 小时前
setting up Activiti BPMN Workflow Engine with Spring Boot
数据库·spring boot·后端
文牧之3 小时前
Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
运维·数据库·oracle
篱笆院的狗3 小时前
如何使用 Redis 快速实现布隆过滤器?
数据库·redis·缓存
洛神灬殇4 小时前
【LLM大模型技术专题】「入门到精通系列教程」基于ai-openai-spring-boot-starter集成开发实战指南
网络·数据库·微服务·云原生·架构
小鸡脚来咯4 小时前
redis分片集群架构
数据库·redis·架构
christine-rr5 小时前
征文投稿:如何写一份实用的技术文档?——以软件配置为例
运维·前端·网络·数据库·软件构建