探索 Mistral 新发布的具有原生函数调用功能的 7B 模型【附notebook文件】

news2024/11/13 16:39:44

引言

Mistral 发布了新版的 7B 模型,这次更新引入了原生函数调用功能。对于开发者和 AI 爱好者来说,这一更新极具吸引力,因为它增强了模型的功能和实用性。在这篇博客中,我们将深入探讨这些新功能,展示如何使用该模型,并通过详细的代码示例来说明其实用性。

Mistral 7B 模型的新特性

与之前的版本不同,最新的 Mistral 7B 模型包含了几个显著的改进:

  1. 新基础模型:这不仅仅是一个微调版本,而是包含了一个全新的基础模型。
  2. 增强的分词器:分词器新增了 768 个额外的 tokens,支持新的功能并可能支持其他语言。
  3. 函数调用支持:现在集成了原生的函数调用支持,使应用更加动态和互动。

环境设置

要开始使用新版 Mistral 7B 模型,我们需要先设置好开发环境。以下是必要的步骤和代码示例:

!pip install git+https://github.com/huggingface/transformers # 从 GitHub 安装 transformers
!pip install datasets loralib sentencepiece
!pip install bitsandbytes accelerate xformers einops
!pip install hf_transfer

加载和测试模型

我们将展示如何加载模型并进行基本的测试。

import os
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM

os.environ['HF_HUB_ENABLE_HF_TRANSFER'] = '1'
torch.set_default_device('cuda')

# 使用 Hugging Face 的 pipeline 加载模型
pipe = pipeline(
    "text-generation",
    model="mistralai/Mistral-7B-Instruct-v0.3",
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda",
)

# 加载旧版本的分词器以进行对比
old_tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2")

# 对比新旧分词器的 token 化结果
print(pipe.tokenizer("How are you? I'm fine. And you?")['input_ids'])
print(old_tokenizer("How are you? I'm fine. And you?")['input_ids'])

新功能展示

新版模型的一个重要功能是支持原生函数调用。以下是一个简单的例子,展示了如何使用这一功能:

from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_inference.model import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest

# 配置和加载模型及分词器
tokenizer = MistralTokenizer.from_file("path/to/tokenizer.model.v3")
model = Transformer.from_folder("path/to/model_folder")

# 定义函数调用请求
completion_request = ChatCompletionRequest(
    tools=[
        Tool(
            function=Function(
                name="get_current_weather",
                description="获取当前天气",
                parameters={
                    "type": "object",
                    "properties": {
                        "location": {"type": "string", "description": "城市和州,例如:San Francisco, CA"},
                        "format": {"type": "string", "enum": ["celsius", "fahrenheit"], "description": "使用的温度单位"},
                    },
                    "required": ["location", "format"],
                },
            )
        )
    ],
    messages=[UserMessage(content="今天巴黎的天气怎么样?")],
)

# 生成并输出结果
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.instruct_tokenizer.tokenizer.decode(out_tokens[0])
print(result)

结论与展望

新版的 Mistral 7B 模型在功能和性能上都有显著提升,特别是其原生函数调用功能,使其在开发动态和互动应用方面具有巨大潜力。我们期待看到更多开发者在此基础上进行有趣的微调和应用开发。如果你有任何问题或建议,欢迎在评论区留言。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python表达式解析的陷阱与技巧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:表达式的复杂性 二、案例分析:表达式的解读 三、陷阱揭示…

架构与思维:4大主流分布式算法介绍(图文并茂、算法拆解)

介绍 本文聚焦高并发场景下分布式一致性算法的分析和讨论 分布式场景下困扰我们的3个核心问题(CAP):一致性、可用性、分区容错性。 1、一致性(Consistency): 无论服务如何拆分,所有实例节点同一…

【安全产品】基于HFish的MySQL蜜罐溯源实验记录

MySQL蜜罐对攻击者机器任意文件读取 用HFish在3306端口部署MySQL蜜罐 配置读取文件路径 攻击者的mysql客户端版本为5.7(要求低于8.0) 之后用命令行直连 mysql -h 124.222.136.33 -P 3306 -u root -p 可以看到成功连上蜜罐的3306服务,但进行查询后会直接lost con…

解决CLion调试时无法显示变量值的问题

1 问题描述 使用CLion的时候,调试时无法显示变量的值,例如: 图来自StackOverflow。 2 解决办法 可以尝试切换调试器解决,在Linux下,CLion支持GDB和LLDB,如果GDB不行,可以切换到LLDB。 切换方…

定积分求解过程是否变限问题 以及当换元时注意事项

目录 定积分求解过程是否变限问题 文字理解: 实例理解: 易错点和易混点: 1:定积分中的换元指什么? 2: 不定积分中第一类换元法和第二类换元法的本质和区别 3: df(x) ----> df(x)这…

001 仿muduo库实现高性能服务器组件_项目简介

​🌈个人主页:Fan_558 🔥 系列专栏:仿muduo 🌹关注我💪🏻带你学更多知识 文章目录 一、项目简介二、所需知识储备三、什么是muduo四、Reactor模式单Reactor单线程:单I/O多路复⽤业务…

车载电子电器架构 —— 应用软件开发(下)

车载电子电器架构 —— 应用软件开发(下) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

美军配备人工智能武器的机器狗引发伦理争议

近日,美国海军陆战队特种作战司令部(MARSOC)的一项测试引发了全球关注:他们正在评估一种由“幽灵机器人”公司研发的最新型机器狗,并考虑为其配备“玛瑙工业”公司提供的武器系统。这一消息犹如在平静的湖面投下一颗石…

Star-CCM+中滞环的实现—场平均监视

前言 前文有介绍过通过更新事件来实现滞环,但是更新事件的方法比较繁琐,应用起来比较困难,本文将介绍一种简单的方法来实现滞环功能。即通过场平均监视来实现,具体方法如下: 一 创建场平均监视 首先在检测量下创建“场平均监视”,具体操作步骤如下图所示: 二 创建质量…

看这两位东北圣女美吗?如何描写美女的大长腿?

看这两位东北圣女美吗?如何描写美女的大长腿? 最近署名为懂球娘娘的一篇描写东北圣女的文章火了,文中描述了海棠朵朵与辛芷蕾这两位娇媚动人的角色。其美艳动人的形象和魅力四溢的描写让人为之倾倒。 这种通过文字展现人物魅力的能力让人佩服…

中间件-------RabbitMQ

同步和异步 异步调用 MQ MQ优势:①服务解耦 ②异步调用 ③流量削峰 结构 消息模型 RabbitMQ入门案例,实现消息发送和消息接收 生产者: public class PublisherTest {Testpublic void testSendMessage() throws IOException, TimeoutExce…

【Visual Studio】没法进断点

文章目录 先看看文心一言给的回答 开发过程中,没法进断点的情况还是很少的(指的是一直进不去的情况,热重载导致的都可以通过重启ide解决),但还是有极少数情况下会出现。 先看看文心一言给的回答 如果Visual Studio无…

2024年NGFW防火墙安全基准-防火墙安全功效竞争性评估实验室总结报告

Check Point 委托 Miercom 对 Check Point 下一代防火墙 (NGFW) 开展竞争性安全有效性测试, 选择的竞品分别来自 Cisco、Fortinet 和 Palo Alto Networks。对 Zscaler 的测试涉及他们的 SWG(安全网关)。测试内容包括验证防病毒、反恶意软件、…

文本处理工具grep及sed

文章目录 一、grep文本处理工具二、sed文本处理工具基本用法sed脚本格式搜索替代 一、grep文本处理工具 选项含义-color对匹配到的文本着色显示-m 次数匹配到规定的次数后停止-v显示不被命令匹配到的行,即取反-i忽略字符大小写-n显示匹配的行号-c统计匹配的行数-o仅显示匹配到…

乡村振兴的乡村文化传承与活化:活化乡村传统文化,传承乡村文化基因,打造具有文化魅力的美丽乡村

目录 一、引言 二、乡村文化的独特价值与现状 三、活化乡村传统文化的策略 1、挖掘乡村文化资源 2、创新文化表达方式 3、加强文化产业发展 四、传承乡村文化基因的途径 1、加强文化教育 2、培育文化人才 3、弘扬文化精神 五、打造具有文化魅力的美丽乡村 1、规划乡…

输入输出(1)——C++的输入输出概述

目录 一、C的输入输出 (一) C的输入输出 (二)C语言的scanf和printf 二、C的输入输出流 (一) iostream类库中有关的类 (二) iostream.h头文件的流对象和重载运算符 一、C的输入输出 (一) C的输入输出 之前用到的输入输出,都是以终端…

最近5星好评的华为的书《常变与长青》

常变与长青 (豆瓣) 作者简介 郭平,1988年加入华为,历任产品开发部项目经理、供应链总经理、总裁办主任、管理工程部总裁、企业发展部总裁、终端公司董事长兼总裁、公司轮值CEO、财经委员会主任、公司副董事长、轮值董事长等职务,现任公…

Science 基于尖峰时序编码的模拟神经触觉系统,可实现动态对象分类

快速处理和有效利用手与物体交互过程中产生的动态触觉信号(例如触摸和抓握)对于触觉探索和灵巧的物体操作至关重要。将电子皮肤(e-skins)推进到模仿自然触觉的水平,是恢复截肢者和瘫痪患者丧失的功能的可行解决方案&am…

IDE上传本地仓库到GitHub

IDE上传本地仓库到GitHub 1、选择远程仓库平台2、下载安装Git3、IDE集成Git4、本地项目上传GitHub 1、选择远程仓库平台 1.1、注册远程仓库平台 常见的远程仓库托管平台有: 1)GitHub 域名:https://github.com 介绍:GitHub是全球最…