基于openai api构建assistant_from openai import openai-程序员宅基地

技术标签: oneapi  语言模型  人工智能  aigc  chatgpt  chatGPT  

主题

今天openai开了发布会,除了发布新的模型之外,也重点介绍了openai api中的assistant模块,用户可以在api中,通过自定义assistant的方式,实现一些特定的功能。

下面直接给出创建assistant并且调用的代码,穿插着注释讲解。

openai官方链接:https://platform.openai.com/docs/assistants/overview

| 注意:openai的版本需要更新到1.1.x,否则无法使用该功能

核心代码

from openai import OpenAI
import time

# 构建client
client = OpenAI()

# 构建assistant
# 下面定义的是assistant的系统属性、使用的工具以及使用的模型
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-3.5-turbo"
)

# 创建消息队列处理线程
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=""
)

result = None
while True:
    # 查询消息的状态
    run = client.beta.threads.runs.retrieve(
        thread_id=thread.id,
        run_id=run.id
    )
    # 如果状态完成,则获取结果,break
    if run.status == "completed":
        messages = client.beta.threads.messages.list(thread_id=thread.id)
        result = messages.data[0].content[0].text.value
        break
    # 继续请求
    time.sleep(1)
    print(f"still waiting for the respone, status: {
      run.status}")

print(f"resp: {
      result}")

结果

still waiting for the respone, status: in_progress
...
still waiting for the respone, status: in_progress
resp: The solution to the equation `3x + 11 = 14` is `x = 1`.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012526003/article/details/134276276

智能推荐

开关电源电路图及原理12v分析-详细版_12v开关电源电路图及原理-程序员宅基地

文章浏览阅读1.5w次,点赞12次,收藏131次。开关电源电路图及原理12v(开关电源电路图及原理详解)开关电源电路图及原理进行讲解,仅供参考!1、开关电源的电路组成开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源的电路组成方框图如下:2、输入电路的原理及常见电路(1)AC输入整流滤波电路原理:① 防雷电路:当有雷击,产生高压经电网导入电源时,由MOV1、MOV2、MOV3:F1、F2、F_12v开关电源电路图及原理

Java学习笔记(八):缓冲流、转换流和序列化流_转换流和序列化流的-程序员宅基地

文章浏览阅读237次。foochane :https://foochane.cn/article/2020010201.html文章目录1 缓冲流1.1 概述1.2 字节缓冲输出流成员方法构造方法使用步骤代码示例1.3 字节缓冲输入流成员方法构造方法使用步骤代码示例1.4 基本字节流和缓冲字节流效率测试基本流缓冲流缓冲流使用数据1.5 字符缓冲输出流成员方法构造方法使用步骤代码示例1.6 字符缓冲输入流成员方法构..._转换流和序列化流的

koa-body koa2 使用 koa-body 代替 koa-bodyparser 和 koa-multer_koabody is not a function-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏11次。koa2 使用 koa-body 代替 koa-bodyparser 和 koa-multer评论:7·阅读:22543·喜欢:7一、需求 二、koa-body 的基本使用 1、安装依赖 2、app.js 3、有用的参数 1)koa-body 的基本参数 2)formidable 的相关配置参数 4、获取文件上传后的信息 三、结果..._koabody is not a function

react withRouter_react withroter 导入-程序员宅基地

文章浏览阅读267次。高阶组件中的withRouter, 作用是将一个组件包裹进Route里面, 然后react-router的三个对象history, location, match就会被放进这个组件的props属性中.// withRouter实现原理: // 将组件包裹进 Route, 然后返回// const withRouter = () => {// return () =&..._react withroter 导入

【路径规划】基于模型预测人工势场MPAPF求解考虑复杂遭遇场景的 COLREG船舶运动规划附matlab代码_mpapf是什么-程序员宅基地

文章浏览阅读153次。船舶运动规划是海上自主水面船舶(MASS)自主航行的核心问题。本文提出了一种新的模型预测人工势场(MPAPF)运动规划方法,用于考虑避碰的复杂遭遇场景规则。建立了一个新的舰船域,其中设计了一个闭区间势场函数来表示舰船域的不可侵犯性。采用在运动规划期间具有预定义速度的 Nomoto 模型来生成符合船舶运动学的可跟随路径。为解决传统人工势场(APF)方法的局部最优问题,保证复杂遭遇场景下的避撞安全,提出了一种基于模型预测策略和人工势场的运动规划方法——MPAPF。该方法将船舶运动规划问题转化为具有包括机动性。_mpapf是什么

利用群晖搭建LEDE路由器,旁路由器_群晖旁路由leds-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏27次。首先如果你使用的群晖只有一个网口的话,那么搭建出来的路由器是一个旁路由器,也就是说与你本身的路由器不冲突,DHCP还是使用原先的路由器进行管理,通过修改网关可以让你需要连接群晖路由服务的设备连接,或者在原主路由的网关设置中,将群晖的IP填入进去,这些后面都能看到。总体方法都是使用虚拟机,创建LEDE。关于资源分配,内存上1G是富裕很多,甚至512都很充裕,我分配的是350,具体可以根据软件中心使用..._群晖旁路由leds

随便推点

Pandas 修改index_pandas修改df index-程序员宅基地

文章浏览阅读190次。Pandas 修改index。_pandas修改df index

Sharding-JDBC主子表(绑定表)关联_shardingjdbc 对2张表分表,那么联表查询-程序员宅基地

文章浏览阅读2.7k次。主子表关联在我们的开发业务中是及其常见的,本文我们就来看下如何在分库分表的情况下,使用来完成主子关联。官方文档指分片规则一致的主表和子表。例如:t_order 表和 t_order_item 表,均按照 order_id 分片,则此两张表互为绑定表关系。绑定表之间的多表关联查询不会出现笛卡尔积关联,关联查询效率将大大提升。其中 t_order 在 FROM 的最左侧,ShardingSphere 将会以它作为整个绑定表的主表。_shardingjdbc 对2张表分表,那么联表查询

为什么我们从github clone下来的maven项目本地运行报错_idea github下的项目报错-程序员宅基地

文章浏览阅读226次。github上的项目clone到本地,比如是个Springboot的项目,我们用idea运行莫名其妙的报各种问题,常见的有以下异常:- java.lang.NoClassDefFoundError:xxxx- java.lang.ClassNotFoundException:xxxxx- java.lang.NoSuchMethodError:xxxx- java.lang.LinkageError:xxxx_idea github下的项目报错

CISCO ACL配置详解_cisco 查看acl匹配次数-程序员宅基地

文章浏览阅读4.9w次,点赞23次,收藏128次。什么是ACL?访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的支持了。访问控制列表的原理对路由器接口来说有两个方向出:已经经路由器的处理,正_cisco 查看acl匹配次数

开源软件漏洞安全风险分析-程序员宅基地

文章浏览阅读4.2k次。聚焦源代码安全,网罗国内外最新资讯!作者:冯兆文、刘振慧 / 西北工业大学、中国航空工业发展研究中心一、引言2020年2月,国家信息安全漏洞共享平台(CNVD ) 发布了关于Apache..._开源组件高高危漏洞有哪些

如何构建自我的认知系统-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏6次。谈到认知系统,题目有点大。我尽量给大家梳理清楚,并提出一些建议。我认为的认知系统分三个阶段:1、初级阶段--认知”点“形成阶段:专业知识栈;我们每个人都有自己的职业发展方向,对于技术人员来说,专业知识栈越丰富代表技术能力越强。专业知识栈主要分为两大部分:专业技能和个人软技能。专业技能主要包括基础知识(如通信、计算机、网络、编程、算法、数据库等)、技术实现能力(产品/编码/测试能力、架构..._认知系统