当前位置: 首页 > news >正文

实测_GPT_Assistant

1 资源

  • openai 客户端源码:

    https://github.com/openai/openai-python/

  • openai 各种 API 示例:

    https://platform.openai.com/examples

  • assistant 示例:

    https://platform.openai.com/docs/assistants/overview

2 Assistant 功能

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

3 操作步骤

(较之前的api略复杂)

  • 升级 openai api
pip install --upgrade openai
  • 创建 Assistant,定义其 instruction 并选择模型,如果需要,设置代码解释器、检索和函数调用功能。
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"
)
  • 开始对话时,创建一个线程。
thread = client.beta.threads.create()
  • 随着用户提出问题,向线程添加消息。
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?"
)
  • 在线程上运行助手以触发回应,此时自动调用相关的工具。
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."
)
  • 查询状态
run = client.beta.threads.runs.retrieve(thread_id=thread.id,run_id=run.id
)
  • 显示消息(收/发)
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 用起来比较省事,但效果未必更好。

相关文章:

  • CentOS修改root用户密码
  • Vue+ElementUI技巧分享:自定义表单项label的文字提示
  • golang中context使用总结
  • 【自动化测试】基于Selenium + Python的web自动化框架!
  • SDL2 消息循环和事件响应
  • RESTful(Representational State Transfer)
  • 第五章 将对象映射到 XML - 指定映射 XML 文档的格式选项
  • 5、鸿蒙项目远程调试
  • 目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch
  • 【数据结构】栈与队列的实现
  • Elasticsearch 索引库操作与 Rest API 使用详解
  • Cloud
  • 【解决】使用Element-Plus icon图标不显示
  • 云ES高级监控告警
  • 【机器学习】朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)
  • 2019年如何成为全栈工程师?
  • Android 架构优化~MVP 架构改造
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • JAVA SE 6 GC调优笔记
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • js 实现textarea输入字数提示
  • orm2 中文文档 3.1 模型属性
  • python3 使用 asyncio 代替线程
  • spring学习第二天
  • Web Storage相关
  • windows-nginx-https-本地配置
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 试着探索高并发下的系统架构面貌
  • 推荐一个React的管理后台框架
  • 最近的计划
  • ​TypeScript都不会用,也敢说会前端?
  • #微信小程序(布局、渲染层基础知识)
  • (13)Hive调优——动态分区导致的小文件问题
  • (4)logging(日志模块)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (四)模仿学习-完成后台管理页面查询
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET构架之我见
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @media screen 针对不同移动设备
  • @requestBody写与不写的情况
  • @vue/cli脚手架
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [C/C++]关于C++11中的std::move和std::forward
  • [HDU]2161Primes
  • [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
  • [LeetCode]Balanced Binary Tree
  • [LOJ 6213]「美团 CodeM 决赛」radar
  • [MICROSAR Adaptive] --- autosar官方文档阅读建议
  • [NOIP2017 提高组] 列队 题解