《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人
课程
《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客
我们希望你创建一个定制的服务机器人。
您可以想出任何您希望机器人执行的任务,例如,一个可以解决简单的数学问题的机器人0
一个机器人,它总是输出用户输入单词的反义词
以下是用 API2D 调用 openAI 'model': 'gpt-4o-mini' url = "https://openai.api2d.net/v1/chat/completions"
import requests
import gradio as gr
import jsondef get_response(input_text, prompt_text, chat_history): # 修改函数定义,增加prompt_text参数"""根据用户输入、额外的提示文本以及已有的对话历史获取语言模型的回复,并更新对话历史。:param input_text: 当前用户输入的文本内容。:param prompt_text: 额外的提示文本内容,比如固定的任务引导等。:param chat_history: 之前的对话历史,是一个包含二元组的列表,每个二元组分别是 (用户消息, 模型回复)。:return: 返回更新后的对话历史,包含本次交互后的结果以及包含模型相关信息及回复内容和token数量信息的格式化字符串,若JSON解析出错则返回相应错误提示以及更新后的对话历史。"""url = "https://openai.api2d.net/v1/chat/completions"headers = {'Content-Type': 'application/json','Authorization': 'Bearer fk2****' # <-- 把 fkxxxxx 替换成你自己的 Forward Key,注意前面的 Bearer 要保留,并且和 Key 中间有一个空格。}messages = []# 将之前的对话历史添加到消息列表中,格式需符合API要求for user_msg, bot_msg in chat_history:messages.append({"role": "user", "content": user_msg})messages.append({"role": "assistant", "content": bot_msg})# 添加当前用户输入的消息以及额外的提示文本消息(按照合适的格式添加,这里示例为添加在开头)messages.append({"role": "user", "content": prompt_text + " " + input_text})data = {'model': 'gpt-4o-mini', # 'gpt-3.5-turbo','messages': messages}response = requests.post(url, headers=headers, json=data)status_code = response.status_codetry:json_data = response.json()# 提取模型名称model_name = json_data.get('model', '未知模型')# 提取助手回复的内容assistant_content = json_data.get('choices', [])[0].get('message', {}).get('content', '无回复内容')# 提取各类token数量prompt_tokens = json_data.get('usage', {}).get('prompt_tokens', 0)completion_tokens = json_data.get('usage', {}).get('completion_tokens', 0)total_tokens = json_data.get('usage', {}).get('total_tokens', 0)# 将本次的用户输入和模型回复添加到对话历史中chat_history.append((input_text, assistant_content))return chat_history, f"模型: {model_name}\n回复内容: {assistant_content}\n提示词token数: {prompt_tokens}\n回复内容token数: {completion_tokens}\n总token数: {total_tokens}"except json.JSONDecodeError:# 即使解析JSON出错,也更新对话历史(可以为空回复等情况)chat_history.append((input_text, "解析JSON出错"))return chat_history, "解析JSON出错"# 假设这里的prompt_for_task是你预先定义好的提示文本内容,可根据实际情况赋值
prompt_for_task = "Give me the antonym of the following words"
with gr.Blocks() as demo:chatbot = gr.Chatbot()user_input = gr.Textbox(lines=2, placeholder="请输入你想发送的内容")state = gr.State([]) # 创建一个状态变量,用于存储对话历史,初始化为空列表prompt_textbox = gr.Textbox(label="Prompt", value=prompt_for_task, visible=True) # 添加Prompt文本框,设置为可见# 通过按钮点击事件触发获取回复和更新对话历史等操作send_button = gr.Button("发送")send_button.click(fn=get_response,inputs=[user_input,prompt_textbox, state],outputs=[chatbot, gr.Textbox(label="解析后的响应内容")])demo.launch(debug=True)
输出如下
gpt4 很厉害的翻译了英文 并且中输出
何处无芳草 "Where is there no fragrant grass?" ==>
反义词 无处有刺 nowhere has thorns
你觉得怎么样呢?
相关文章:
《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人
课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 我们希望你创建一个定制的服务机器人。 您可以想出任何您希望机器人执行的任务,例如,一个可以解决简单的数学问题的机器人0 一个机器人,…...
反转链表、链表内指定区间反转
反转链表 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 如当输入链表{1,2,3}时,经反转后,原链表变…...
Debezium系列之:Debezium3版本使用快照过程中的指标
Debezium系列之:Debezium3版本使用快照过程中的指标 一、背景二、技术原理三、增量快照四、阻塞快照指标一、背景 使用快照技术的过程中可以观察指标,从而确定快照的进度二、技术原理 Debezium系列之:Debezium 中的增量快照Debezium系列之:Incremental snapshotting设计原理…...
第一讲,Opencv计算机视觉基础之计算机视觉概述
深度剖析计算机视觉:定义、任务及未来发展趋势 引言 计算机视觉(Computer Vision)是人工智能的重要分支之一,旨在让机器通过视觉感知和理解环境。随着深度学习的快速发展,计算机视觉在自动驾驶、安防监控、医疗影像等…...
数据结构(双向链表——c语言实现)
双向链表相比于单向链表的优势: 1. 双向遍历的灵活性 双向链表:由于每个节点都包含指向前一个节点和下一个节点的指针,因此可以从头节点遍历到尾节点,也可以从尾节点遍历到头节点。这种双向遍历的灵活性使得在某些算法和操作中&a…...
【新人系列】Python 入门(十一):控制结构
✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...
群核科技首次公开“双核技术引擎”,发布多模态CAD大模型
11月20日,群核科技在杭州举办了第九届酷科技峰会。现场,群核科技首次正式介绍其技术底层核心:基于GPU高性能计算的物理世界模拟器。并对外公开了两大技术引擎:群核启真(渲染)引擎和群核矩阵(CAD…...
【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势
文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…...
linux 常用命令指南(存储分区、存储挂载、docker迁移)
前言:由于目前机器存储空间不够,所以‘斥巨资’加了一块2T的机械硬盘,下面是对linux扩容的一系列操作,包含了磁盘空间的创建、删除;存储挂载;docker迁移;anaconda3迁移等。 一、存储分区 1.1 …...
用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错
首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO:SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…...
Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性
Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性 过期删除策略内存淘汰机制怎么保证redis双写的一致性?更新策略先删除缓存后更新数据库先更新数据库后删除缓存如何选择?如何保证先更新数据库后删除缓存的线程安全问题? 过期删除策略 为了…...
异常处理:import cv2时候报错No module named ‘numpy.core.multiarray‘
问题描述 执行一个将视频变成二值视频输出时候,报错。No module named numpy.core.multiarray,因为应安装过了numpy,所以比较不解。试了卸载numpy和重新安装numpy多次操作,也进行了numpy升级的操作,但是都没有用。 解…...
C++手写PCD文件
前言 一般pcd读写只需要调pcl库接口,直接用pcl的结构写就好了 这里是不依赖pcl库的写入方法 主要是开头写一个header 注意字段大小,类型不要写错 结构定义 写入点需要与header中定义一致 这里用的RoboSense的结构写demo 加了个1字节对齐 stru…...
优选算法(双指针)
1.双指针介绍 双指针算法是一种常用的算法思想,特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构,双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…...
【保姆级】Mac上IDEA卡顿优化
保姆级操作,跟着操作即可~~~ 优化内存 在你的应用程序中,找到你的idea 按住control键+单击 然后点击“显示包内容” </...
python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具
python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具 文章目录 python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具项目背景技术栈用户界面核心功能实现结果展示完整代码总结 在现代软件开发中,测试接口的有效性与响应情况变得尤为重要。本文将指导…...
pytest 接口串联场景
在编写接口测试时,如果有多个接口需要串联在一起调用,并且这些接口共同构成了一个业务场景,通常可以使用以下几种方法来组织代码,使其更具可读性和维护性。以下是一些规范的建议: 1. 使用 pytest 的 fixture 来管理接…...
Springboot项目搭建(2)-用户详细信息查询
1. 提要信息 1.1 java四类八种 在Java中,四类指的是Java中的基本数据类型和引用数据类型: 基本数据类型:Java提供了八种基本数据类型,包括整数型、浮点型、字符型和布尔型。引用数据类型:指向对象的引用,…...
Stable Diffusion的加噪和去噪详解
SD模型原理: Stable Diffusion概要讲解Stable diffusion详细讲解Stable Diffusion的加噪和去噪详解Diffusion ModelStable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——CLIP Text EncoderStable Diffusion核心网络结构——U-NetStable Diffusion中…...
解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题
在 SDK 开发过程中,使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时,你可能会使用 apply plugin: maven 来发布到本地或远程的 Maven 仓库。但是,随着 Gradle 版本的更新,特别是从 Gradle 7 版本开始&…...
EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心! 目录 EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心!效果一览基本介绍程序设计参…...
前端 px、rpx、em、rem、vh、vw计量单位的区别
目录 一、px 二、rpx 三、em 四、rem 五、vh和vw 六、rpx 和 px之间的区别 七、px 与 rem 的区别 一、px px(像素): 1、相对单位,代表屏幕上的一个基本单位,逻辑像素。 2、不会根据屏幕尺寸或分辨率自动调整大…...
OceanBase数据库产品与工具介绍
OceanBase:蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase? OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。它具有以下核心特点: 数据强一致性:在分布式架构下确保数据强…...
学习threejs,对模型多个动画切换展示
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.AnimationMixer 动画…...
【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:本文面向的人群 二:错误场景引入 三:正确场景引入 四…...
Python爬虫:如何从1688阿里巴巴获取公司信息
在当今的数字化时代,数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说,能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一,拥有海量的企业档案和产品信息。本文将介绍如何…...
单片机学习笔记 2. LED灯闪烁
更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯 目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理:需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软…...
折叠光腔衰荡高反射率测量技术的matlab模拟理论分析
折叠光腔衰荡高反射率测量技术的matlab模拟理论分析 1. 前言2. 光腔模型3. 光腔衰荡过程4. 衰荡时间与反射率的关系5. 测量步骤①. 光腔调节:②. 光腔衰荡测量:③. 计算衰荡时间常数:④. 反射率计算: 6. 实际应用中的调整7. 技术优…...
ubuntu 16.04 中 VS2019 跨平台开发环境配置
su 是 “switch user” 的缩写,表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写,意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写,Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…...
C语言第13节:指针(3)
1. 回调函数 回调函数的基本思想是,将函数指针作为参数传递给另一个函数,并在需要时通过这个函数指针调用对应的函数。这种方式允许一个函数对执行的内容进行控制,而不需要知道具体的实现细节。 回调函数在以下场景中尤为有用: …...
上海营销型网站建设价格/百度seo优化服务项目
这部分主要是讲怎么把自己的数据转换成TFRecord 主要步骤如下: 1.转换数据格式 2.读取数据以及解码 3.生成Batch 4.构建tensorflow图谱 5.训练模型/验证、测试 原作者Kevin的视频课程地址:Youtube 关于TFRecord 是tensorflow的官方数据格式,请…...
网站源码提取/百度广告竞价
1.第一个直接看看这个游戏看起来视频(GIF我们不能满足游戏展)跑酷游戏最纠结的是地图。碰撞倒是简单,能够自己写或者使用box2d等物理引擎。跑酷游戏地图的特点就是随机性。可是随机中又有策划特意安排的部分。这样让玩家有小小惊喜。所以我就打算这样实现࿱…...
wordpress 安卓接口/全球搜索引擎市场份额
1,在扩展节点M时,计算了其后继节点N的F值,发现N节点已经在open链表中,并且新的F值小于老的F值,但是此时不进行F值的更新,那么修改过的算法正确吗?很简单不正确的,看下面这个图 图…...
民治营销网站制作/游戏推广怎么做引流
在 SpringBoot 中默认的 404 返回的信息如下: 我们如果要对 404 返回的异常信息做重新定义,我们需要新建一个 controller 来处理它,如下: import com.asurplus.common.utils.RES; import org.springframework.boot.web.servlet.…...
推广游戏网站怎么做/seo推广方法
Python如何实现单步调试https://www.cnblogs.com/jing1617/p/9396617.htmlhttps://www.cnblogs.com/xiaohai2003ly/p/8529472.htmlpython -m pdb install_patch.py -u sa -s DBSVR -p Changeme_123 -l zh_CN -t standalonepdb.set_trace()Python如何实现单步调试方法一…...
福田莲花北网站建设/个人博客网页设计
1. 悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,…...