大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(2)

大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(2)

  • 前言
  • 本篇摘要
  • 11. 使用transformers.agents构建Gradio UI
    • 11.2 定义大模型引擎Engines
      • 11.2.1 引擎函数:llm_engine
      • 11.2.2 TransformersEngine类
      • 11.2.3 HfApiEngine类
      • 11.2.4 HfEngine类
    • 参考文献

前言

本系列文章主要介绍WEB界面工具Gradio。Gradio是Hugging Face发布的简易WebUI开发框架,它基于FastAPI和svelte,可以使用机器学习模型、python函数或API开发多功能界面,并可部署人工智能模型,是当前热门的非常易于展示机器学习大语言模型LLM及扩散模型DM的WebUI框架。
本系列文章分为五部分:Gradio介绍、HuggingFace资源与工具库、Gradio基础功能实战、Gradio与大模型融合实战和Gradio高级功能实战。第一部分Gradio介绍,包括三章内容:第一章先介绍Gradio的概念,包括详细技术架构、历史、应用场景、与其他框架Gradio/NiceGui/StreamLit/Dash/PyWebIO的区别,然后详细介绍了Gradio的安装与运行,安装包括Linux/Win/Mac三类系统安装,运行包括普通方式和热重载方式;第二章介绍Gradio的4种部署方式,包括本地部署launch()、huggingface托管、FastAPI挂载和Gradio-Lite浏览器集成;第三章介绍Gradio的三种Client,包括python客户端、javascript客户端和curl客户端,方便读者对Gradio整体把握。第二部分介绍著名网站Hugging Face的各类资源和工具库,因为Gradio演示中经常用到Hugging Face的models及某些场景需要部署在spaces,包括两章内容:第四章详解三类资源models/datasets/spaces的使用,第五章实战六类工具库transformers/diffusers/datasets/PEFT/accelerate/optimum实战。第三部分是Gradio基础功能实战,进入本系列文章的核心,包括四章内容:第六章讲解Gradio库的模块架构和环境变量,第七章讲解Gradio高级抽象界面类Interface,第八章讲解Gradio底层区块类Blocks,第九章讲解补充特性Additional Features。第四部分是Gradio与大模型融合的实战,包括三章内容:第十章讲解融合大模型的多模态聊天机器人组件Chatbot,第十一章讲解使用Agents和Tools智能代理工具构建UI,第十二章讲述将Gradio用于LLM Agents的Gradio Tools。第五部分详解Gradio高级功能,包括三章内容:第十三章讲述Discord Bot/Slack Bot/Website Widget部署,第十四章讲述数据科学与绘图Data Science And Plots,第十五章讲述数据流Streaming。
本系列文章讲解细致,涵盖Gradio大部分组件和功能,代码均可运行并附有大量运行截图,方便读者理解并应用到开发中,Gradio一定会成为每个技术人员实现各种奇思妙想的最称手工具。

本系列文章目录如下:

  1. 《Gradio全解1——Gradio简介》
  2. 《Gradio全解1——Gradio的安装与运行》
  3. 《Gradio全解2——Gradio的3+1种部署方式实践》
  4. 《Gradio全解2——浏览器集成Gradio-Lite》
  5. 《Gradio全解3——Gradio Client:python客户端》
  6. 《Gradio全解3——Gradio Client:javascript客户端》
  7. 《Gradio全解3——Gradio Client:curl客户端》
  8. 《Gradio全解4——剖析Hugging Face:详解三类资源models/datasets/spaces》
  9. 《Gradio全解5——剖析Hugging Face:实战六类工具库transformers/diffusers/datasets/PEFT/accelerate/optimum》
  10. 《Gradio全解6——Gradio库的模块架构和环境变量》
  11. 《Gradio全解7——Interface:高级抽象界面类(上)》
  12. 《Gradio全解7——Interface:高级抽象界面类(下)》
  13. 《Gradio全解8——Blocks:底层区块类(上)》
  14. 《Gradio全解8——Blocks:底层区块类(下)》
  15. 《Gradio全解9——Additional Features:补充特性(上)》
  16. 《Gradio全解9——Additional Features:补充特性(下)》
  17. 《Gradio全解10——Chatbot:融合大模型的多模态聊天机器人(1)》
  18. 《Gradio全解10——Chatbot:融合大模型的多模态聊天机器人(2)》
  19. 《Gradio全解10——Chatbot:融合大模型的多模态聊天机器人(3)》
  20. 《Gradio全解10——Chatbot:融合大模型的多模态聊天机器人(4)》
  21. 《Gradio全解10——Chatbot:融合大模型的多模态聊天机器人(5)》
  22. 《Gradio全解11——使用Agents和Tools智能代理工具构建UI(1)》
  23. 《Gradio全解11——使用Agents和Tools智能代理工具构建UI(2)》
  24. 《Gradio全解11——使用Agents和Tools智能代理工具构建UI(3)》
  25. 《Gradio全解11——使用Agents和Tools智能代理工具构建UI(4)》
  26. 《Gradio全解12——Gradio Tools:将Gradio用于LLM Agents》
  27. 《Gradio全解系列13——Discord Bot/Slack Bot/Website Widget部署》
  28. 《Gradio全解系列14——Data Science And Plots:数据科学与绘图》
  29. 《Gradio全解15——Streaming:数据流(上)》
  30. 《Gradio全解15——Streaming:数据流(下)》

本篇摘要

Gradio的组件Chatbot原生支持显示中间思考过程和工具使用情况(参考其参数metadata用法),这使得它非常适合为LLM Agent、思维链(Chain-of-Thought, CoT)或推理演示创建用户界面,本章将展示如何使用gr.Chatbot和gr.ChatInterface来显示思考过程和工具使用情况。
本章开始讲解四种代理和工具方式构建用户界面,其中前三种为代理方式,包括transformers.agents、langchain agents和langgraph,第四种使用显示思考的思维链工具Gemini 2.0 Flash Thinking API构建UI。因为Agents作为连接各大模型和工具的桥梁,是打通人工通用智能(AGI)的最后一公里,对从业者和人工智能行业都是至关重要的一环,所以本章将重点放在Agents智能体的原理及应用步骤拆解,然后才是通过Gradio构建UI。作者为此阅读了大量文献,以尽量阐述清楚智能代理,请读者不吝三连和评论,共同进步变强。

11. 使用transformers.agents构建Gradio UI

本章讲述如何使用transformers.agents构建Gradio UI,内容包括代理概念类型和构建、定义大模型引擎Engines、创建和使用Tools、系统提示、其它设置和使用transformers.agents构建Gradio UI。关于库transformers的介绍请参考Hugging Face章节中的六大工具库实战。

11.2 定义大模型引擎Engines

我们可以自由创建和使用用于代理框架的引擎Engines,但需要满足以下条件:

  • 它遵循输入消息的消息格式(List[Dict[str, str]]),并返回一个字符串;
  • 它在传入的参数stop_sequences指定的序列处停止生成输出。

下面就来了解下四种不同的创建引擎方法:模型函数llm_engine、TransformersEngine、HfApiEngine和HfEngine,请注意区分它们适用的场景。

11.2.1 引擎函数:llm_engine

我们可以通过定义一个接受消息列表并返回文本的函数llm_engine来构建LLM引擎,这个可调用对象还需要接受一个stop参数以指示何时停止生成。

from huggingface_hub import login, InferenceClientlogin("<YOUR_HUGGINGFACEHUB_API_TOKEN>")client = InferenceClient(model="meta-llama/Meta-Llama-3-70B-Instruct")def llm_engine(messages, stop_sequences=["Task"]) -> str:response = client.chat_completion(messages, stop=stop_sequences, max_tokens=1000)answer = response.choices[0].message.contentreturn answer

此外,llm_engine还可以接受一个grammar参数。如果在代理初始化时指定了grammar,这个参数将连同初始化时定义的grammar一起传递给llm_engine的调用,以实现受约束的生成,从而强制代理生成格式正确的输出。

11.2.2 TransformersEngine类

为了方便起见,我们可以添加一个TransformersEngine,它通过预初始化的Pipeline作为输入实现上述功能,或可选的使用model_id,以便使用transformers在本地机器上运行推理。示例代码如下:

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline, TransformersEnginemodel_name = "HuggingFaceTB/SmolLM-135M-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
engine = TransformersEngine(pipe)
engine([{"role": "user", "content": "Ok!"}], stop_sequences=["great"])
# 输出
"What a "

11.2.3 HfApiEngine类

由于代理行为通常需要更强的模型,如Llama-3.1-70B-Instruct,这些模型目前较难在本地运行,因此我们还提供了HfApiEngine类,HfApiEngine是一个封装了Hugging Face Inference API客户端的引擎,即在底层初始化了一个huggingface_hub.InferenceClient,用于执行大语言模型(LLM)的调用。

该引擎通过Hugging Face的推理API与语言模型进行通信,它可以在无服务器模式(serverless)下使用,也可以与专用端点(dedicated endpoint)一起使用,并支持诸如停止序列(stop sequences)和语法自定义(grammar customization)等功能。程序中甚至可以留空llm_engine参数,默认情况下会创建一个HfApiEngine。示例代码如下:

from transformers import HfApiEnginellm_engine = HfApiEngine(model="meta-llama/Meta-Llama-3-70B-Instruct")

11.2.4 HfEngine类

对于本地部署的具有Inference API的LLM,我们还可以直接使用包中提供的 HfEngine 类来获取一个调用我们自己的Inference API的LLM引擎,示例代码如下:

from transformers.agents import HfEnginellm_engine = HfEngine("meta-llama/Meta-Llama-3-70B-Instruct")

参考文献

  1. Gradio - guides - Chatbots
  2. License to Call: Introducing Transformers Agents 2.0
  3. Hugging Face - Transformers - Agents and tools

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

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

相关文章

Python爬虫实战:爬取豆瓣电影

目录 引言 1. 爬虫基础 1.1 什么是爬虫&#xff1f; 1.2 Python爬虫常用库 2. 实战&#xff1a;抓取豆瓣电影Top250 2.1 安装依赖库 2.2 发送HTTP请求 ​编辑 2.3 解析HTML ​编辑 2.4 存储数据 2.5 完整代码 3. 进阶&#xff1a;处理分页和动态内容 3.1 抓取多页…

Redis7——基础篇(六)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…

Windows 下 Ollama 安装deepseek本地模型

Windows 下 Ollama 安装deepseek本地模型 安装 Ollama 下载 Ollama 下载链接&#xff1a;https://ollama.org.cn/download/windows 下载完成后&#xff0c;按照提示进行安装。 安装过程 安装完成后&#xff0c;安装页面会自动关闭&#xff0c;这是正常现象。 接下来&#…

【鸿蒙开发】第四十三章 Notification Kit(用户通知服务)

目录​​​​​​​ 1 简介 1.1 使用场景 1.2 能力范围 1.3 业务流程 1.4 通知样式 1.5 约束限制 1.6 与相关Kit的关系 2 请求通知授权 2.1 接口说明 2.2 开发步骤 3 管理通知角标 3.1 接口说明 3.2 开发步骤 4 管理通知渠道 4.1 通知渠道类型说明 4.2 接口说明…

bboss v7.3.5来袭!新增异地灾备机制和Kerberos认证机制,助力企业数据安全

ETL & 流批一体化框架 bboss v7.3.5 发布&#xff0c;多源输出插件增加为特定输出插件设置记录过滤功能&#xff1b;Elasticsearch 客户端新增异地双中心灾备机制&#xff0c;提升框架高可用性&#xff1b;Elasticsearch client 和 http 微服务框架增加对 Kerberos 认证支持…

利用非球面透镜进行激光光束重组

这是高斯分布激光束重塑透镜设计的分步演示。该透镜用于将高斯分布转换为成像平面上的均匀照明。 输入激光光束轮廓&#xff1a; 光学结构&#xff1a; Excel 中坐标的数学计算&#xff1a; 输出照度曲线&#xff1a;

(一)趣学设计模式 之 单例模式!

目录 一、啥是单例模式&#xff1f;二、为什么要用单例模式&#xff1f;三、单例模式怎么实现&#xff1f;1. 饿汉式&#xff1a;先下手为强&#xff01; &#x1f608;2. 懒汉式&#xff1a;用的时候再创建&#xff01; &#x1f634;3. 枚举&#xff1a;最简单最安全的单例&a…

nacos编写瀚高数据库插件

1、下载nacos源码 git clone gitgithub.com:alibaba/nacos.git 2、引入瀚高驱动 <dependency><groupId>com.highgo</groupId><artifactId>jdbc</artifactId><version>${highgo.version}</version></dependency> 3、DataSource…

讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。

在信息爆炸的时代&#xff0c;智能语音问答系统正以前所未有的速度融入我们的日常生活。然而&#xff0c;随着数据泄露事件的频发&#xff0c;用户对于隐私保护的需求日益增强。想象一下&#xff0c;一个无需联网、即可响应你所有问题的智能助手——这就是纯离线大模型智能语音…

后端Java Stream数据流的使用=>代替for循环

API讲解 对比 示例代码对比 for循环遍历 package cn.ryanfan.platformback.service.impl;import cn.ryanfan.platformback.entity.Algorithm; import cn.ryanfan.platformback.entity.AlgorithmCategory; import cn.ryanfan.platformback.entity.DTO.AlgorithmInfoDTO; im…

UE 播放视频

一.UI播放视频 1.导入视频文件至工程文件夹 2.文件夹内右健选择Media -> File Meida Source创建testFileMeidaSource文件。 编辑FilePath为当前视频 3.右键->Media->Media Player 创建testMediaPlayer文件 4.右键创建testMediaTexture。编辑MediaPlayer设置testMedia…

推荐一款AI大模型托管平台-OpenWebUI

推荐一款AI大模型托管平台-OpenWebUI 1. OpenWebUI 1. OpenWebUI什么? 官网地址&#xff1a;https://openwebui.com/ GitHub地址&#xff1a; https://github.com/open-webui/open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台&#xff0c;旨在完全离…

【Python项目】基于知识图谱的百科问答系统

【Python项目】基于知识图谱的百科问答系统 技术简介&#xff1a; 采用Python技术、MySQL数据库、Django框架、Scrapy爬虫等技术实现。 系统简介&#xff1a; 百科问答系统是一个基于知识图谱的问答平台&#xff0c;旨在为用户提供快速、准确的百科知识查询服务。系统通过爬…

stm32rtc实时时钟详解文章

目录 stm32 后备区域基础知识详解 stm32 bkp基础知识详解 Unix时间戳基础知识详解 stm32 rtc实时时钟基础知识详解 相关代码初始化配置 欢迎指正&#xff0c;希望对你&#xff0c;有所帮助&#xff01;&#xff01;&#xff01; stm32 后备区域基础知识详解 stm32芯片的 …

Spring Boot项目@Cacheable注解的使用

Cacheable 是 Spring 框架中用于缓存的注解之一&#xff0c;它可以帮助你轻松地将方法的结果缓存起来&#xff0c;从而提高应用的性能。下面详细介绍如何使用 Cacheable 注解以及相关的配置和注意事项。 1. 基本用法 1.1 添加依赖 首先&#xff0c;确保你的项目中包含了 Spr…

windows上vscode cmake工程搭建

安装vscode插件&#xff1a; 1.按装fastc&#xff08;主要是安装MinGW\mingw64比较方便&#xff09; 2.安装C&#xff0c;cmake&#xff0c;cmake tools插件 3.准备工作完成之后&#xff0c;按F1&#xff0c;选择cmake:Quick Start就可以创建一个cmake工程。 4.设置Cmake: G…

SpringMVC详解

文章目录 1 什么是MVC 1.1 MVC设计思想1.2 Spring MVC 2 SpringMVC快速入门3 SpringMVC处理请求 3.1 请求分类及处理方式 3.1.1 静态请求3.1.2 动态请求 3.2 处理静态请求 3.2.1 处理html文件请求3.2.2 处理图片等请求 3.3 处理动态请求 3.3.1 注解说明3.3.2 示例 3.4 常见问题…

【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5

往期 【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_0&#xff1a;介绍了题目和背景【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_1&#xff1a;题目输入的格式说明&#xff0c;选择了邻接表…

面试题汇总

1. 判断大小端问题 大端&#xff1a;低字节存放在高地址&#xff1b; 小端&#xff1a;低字节存放在低地址 如 : 0x12345678 bool is_little_endian() {unsigned int x 1;return ((char*)&x)[0]; }bool is_big_endian() {unsigned int x 1;return !((char*)&x)[0];…

jsherp importItemExcel接口存在SQL注入

一、漏洞简介 很多人说管伊佳ERP&#xff08;原名&#xff1a;华夏ERP&#xff0c;英文名&#xff1a;jshERP&#xff09;是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能&#xff0c;但后面将会推出ERP的全部功能&#xff0c;有兴趣请帮点一下 二、漏洞影响 …