python调用扣子coze智能体示例

news/2024/11/14 18:24:41/文章来源:https://www.cnblogs.com/air/p/18546548
"""
版本号:1.0
日期:2024/11/14
描述:
"""
import uuidimport jwt
import time
import requests# OAuth应用的相关信息,需从扣子平台获取并替换
APP_ID = ""  # auth应用id
PUBLIC_KEY_FINGERPRINT = ""  # 公钥
PRIVATE_KEY_PATH = "private_key.pem" # 私钥文件路径# 扣子API的Endpoint
API_ENDPOINT = "api.coze.cn"def generate_jwt():"""
    生成JWT"""
    # 读取私钥文件with open(PRIVATE_KEY_PATH, 'r') as f:private_key = f.read()# JWT头部信息header = {"alg": "RS256","typ": "JWT","kid": PUBLIC_KEY_FINGERPRINT}# JWT负载信息payload = {"iss": APP_ID,"aud": API_ENDPOINT,"iat": int(time.time()),"exp": int(time.time()) + 86400,  # 这里设置JWT过期时间为1小时,可根据需求调整"jti": uuid.uuid4().hex  # 需替换为真正的随机字符串,每次生成JWT时应不同}# 生成JWTjwt_token = jwt.encode(payload, private_key, algorithm='RS256', headers=header)return jwt_tokendef get_access_token(jwt_token):"""
    使用JWT获取访问令牌"""
    url = "https://api.coze.cn/api/permission/oauth2/token"headers = {"Content-Type": "application/json","Authorization": f"Bearer {jwt_token}"}data = {"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer","duration_seconds": 86399  # 可根据需求调整有效期,最大为86399秒(24小时)}response = requests.post(url, headers=headers, json=data)if response.status_code == 200:return response.json()["access_token"]else:print(f"获取访问令牌失败,错误码: {response.status_code},错误信息: {response.text}")return Nonedef get_conversion_id(access_token):create_url = ' https://api.coze.cn/v1/conversation/create'headers = {'Authorization': f'Bearer {access_token}','Content-Type': 'application/json'}res = requests.post(create_url, headers=headers)return res.json()['data']['id']def chat_with_bot(access_token, conversation_id):url = 'https://api.coze.cn/v3/chat?conversation_id='+conversation_idheaders = {'Authorization': f'Bearer {access_token}','Content-Type': 'application/json'}data = {"bot_id": "",  # 智能体id,就是智能体详情url后面的那个id"user_id": '1234566758',"stream": False,"auto_save_history": True,"additional_messages": [{"role": "user", "content": "你是", "content_type": "text"}]}res = requests.post(url, headers=headers, json=data)print(res.json())return res.json()['data']['id']def get_chat_content(i, c, a):url = 'https://api.coze.cn/v3/chat/retrieve'headers = {'Authorization': f'Bearer {a}','Content-Type': 'application/json'}data = {"conversation_id": i,"chat_id": c}res = requests.get(url, headers=headers, json=data)print(res.json())if __name__ == "__main__":jwt_token = generate_jwt()print(f"生成的JWT: {jwt_token}")access_token = get_access_token(jwt_token)if access_token:print(f"获取的访问令牌: {access_token}")# access_token = 'czs_85DxsJ631VZ7owpzB2ucDmo0iiT0cs3UifDhuvD3yRUEhaDH4GU2pbvWXY4aiNwm'conversion_id = get_conversion_id(access_token)chat_id = chat_with_bot(access_token, conversion_id)time.sleep(1)get_chat_content(conversion_id, chat_id, access_token)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第八课 Python自动化之selenium

python+selenium selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试和验证 (2)减少测试人员在回归测试时用例漏测和验证点的漏测 (3)…

png图片隐写实例之隐藏二维码

图片隐写,借助的是图片的每个像素点的RGB值,比如取RGB中的B值,这个值的二级制的最低位是0还是1,在肉眼上看看不出丝毫区别,我们就可以利用这个数据位,我们知道二维码一般都是两种颜色,黑色和白色,黑色的像素点用1表示,白色用0表示,我们就把二维码的每个像素点转换成1…

Windows环境安装Scrapy

虽然可以使用 pip 在 Windows 上安装 Scrapy,但还是建议用 Anaconda 安装教程 1.创建虚拟环境(可选但推荐) 打开 Anaconda Prompt,执行以下命令: conda create -n scrapy_env python=3.12(这里假设使用 Python 3.12,你可以根据需要选择其他版本)。 2.激活虚拟环境: co…

openssh 漏洞修复 openssl升级 OpenSSH_9.8p1麒麟系统

第一步:准备好要升级的包 下图所示 使用命令:yum install *.rpm或 rpm -ivh *rpm 如果使用 yum install *.rpm 安装不了,在使用 rpm -ivh *rpm 提示已有旧的版本 可以使用 rpm -Uvh *.rpm 可以替换安装,根据不通的系统 有可能安装后会重启不成功, 所以需要使用:sudo sy…

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同 问题描述 某客户现场支持,由MySQL 5.7.21升级MySQL 8.0.25后,通过LOAD DATA导入文件,当同一会话连续导入不同的编码(UTF8/GB18030)文件时会出现乱码。数据库版本未升级之前,相同的导入操作在MySQL 5.7.21未出现乱码。 问…

用命令行启动 docker 报错:Redirecting to /bin/systemctl start docker.service 解决方法

docker安装成功后,用 sudo service docker start 启动docker报这个错误,看提示应该是需要用systemctl的命令。 使用systemctl start docker命令启动成功了,做下记录。 以下是启动doker常用的几个命令: # 启动 docker:systemctl start docker # 停止 docker:systemctl sto…

CCF - 网易雷火基金项目成果:基于大小模型协同的低资源标注技术|CNCC 2024 演讲实录

在科技蓬勃发展的时代浪潮中,人工智能领域的每一次突破都离不开持续的科研投入和对前沿技术的不懈探索。2023 年,网易伏羲与中国计算机学会(CCF)共同发起了 “CCF - 网易雷火联合基金”,致力于发挥和利用多方资源优势,加强与海内外青年学者的科研合作,促进中国人工智能等…

VisualVM 使用说明

VisualVM 简介:一个轻量级的Java进程监控软件 VisualVM 安装介绍(Mac 使用 brew 安装) ➜ ~ brew uninstall visualvm==> Uninstalling Cask visualvm ==> Backing App VisualVM.app up to /opt/homebrew/Caskroom/visualvm/2.1.10/VisualVM.app ==> Removing App /…

Java方法(四)

设计方法原则:本意为功能块,是实现某个功能语句块的结合,设计方法时保持原子性(一个方法完成一个功能)public class operator {public static void main(String[] args) {int sum = add(1,3);System.out.println(sum);}//加法public static int add(int a,int b){return a…

11.14,python之自动化

python+selenium selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试和验证 (2)减少测试人员在回归测试时用例漏测和验证点的漏测 (3)…

快来验 踩CTH !!!

题目 别样的,验个数据验成这使样还怎么玩? 谁跟谁的都不一样