当前位置: 首页 > news >正文

Word中接入大模型教程

前言

为什么要在word中接入大模型呢?

个人觉得最大的意义就是不用来回切换与复制粘贴了吧。

今天分享一下昨天实践的在word中接入大模型的教程。

在word中接入大模型最简单的方式就是使用vba。

vba代码要做的事,拆分一下就是:

  1. 获取用户选中的文本,未选择弹窗提示。
  2. 向大模型API接口发送一个Post请求。
  3. 解析返回的json数据,获取content的内容。
  4. 为了用户体验,打造假流式效果。

效果

实践

第一步:获取用户选中的文本,未选择弹窗提示。

vba代码:

Sub GetSelectedText()Dim selectedText As StringIf Selection.Type = wdSelectionIP Then ' 如果是插入点(光标闪烁),则未选择文本MsgBox "未选中任何文本!请先选择文本。", vbExclamationElseselectedText = Selection.TextIf Trim(selectedText) = "" Then  ' 再次检查 Trim 后的文本是否为空,以防用户只选择了空格MsgBox "未选中任何文本!请先选择文本。", vbExclamationElseMsgBox "选中的文本是: " & selectedTextEnd IfEnd If
End Sub

效果:

image-20250217102026941

image-20250217102101716

第二步:向大模型API接口发送一个Post请求。

在第一步中获取的文本大概率会包含换行符,如果没有去掉,在发送请求的时候会报错,因此第一步的完整代码还需要包括去除换行符的部分,完整代码如下所示:

 Dim selectedText As StringIf Selection.Type = wdSelectionIP Then ' 如果是插入点(光标闪烁),则未选择文本MsgBox "未选中任何文本!请先选择文本。", vbExclamationElseselectedText = Selection.TextIf Trim(selectedText) = "" Then  ' 再次检查 Trim 后的文本是否为空,以防用户只选择了空格MsgBox "未选中任何文本!请先选择文本。", vbExclamationElse'  **** 在这里添加删除换行符的代码 ****selectedText = Replace(selectedText, Chr(13), "") ' 删除回车符 (CR)selectedText = Replace(selectedText, Chr(10), "") ' 删除换行符 (LF)End IfEnd If

在vba中发送Post,可以使用MSXML2.XMLHTTP,代码如下:

API = "https://api.siliconflow.cn/v1/chat/completions"inputText = selectedTextSendTxt = "{""model"": ""meta-llama/Llama-3.3-70B-Instruct"", ""messages"": [{""role"":""system"", ""content"":""你是一个word助手,直接输出文本,不要用md格式。""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"'MsgBox SendTxt, vbExclamation'Selection.TypeText Text:=SendTxtapi_key = "sk-xxx"Set Http = CreateObject("MSXML2.XMLHTTP")With Http.Open "POST", API, False.setRequestHeader "Content-Type", "application/json".setRequestHeader "Authorization", "Bearer " & api_key.send SendTxtstatus_code = .Statusresponse = .responseTextEnd With

这里使用的是硅基流动的平台,使用其它平台需要修改的地方为API接口地址、模型名称与对应的api_key。

第三步:解析返回的json数据,获取content的内容。

为方便起见,我使用的是正则表达式进行content内容的提取。

代码如下所示:

Dim regExp As Object
Set regExp = CreateObject("VBScript.RegExp")regExp.Pattern = """content"":""([^""]*)"""regExp.Global = TrueDim matches As Object
Set matches = regExp.Execute(response)Dim content As String
content = matches(0).SubMatches(0)

第四步:为了用户体验,打造假流式效果。

为了不覆盖选中的内容,需要移动光标。然后为了用户体验,打造假流式效果。

代码如下所示:

Selection.MoveDown Unit:=wdLine, Count:=1Selection.TypeParagraph ' 插入一个新段落,确保在下一行开始For i = 1 To Len(content)Dim char As Stringchar = Mid(content, i, 1)Selection.TypeText Text:=charDim startTime As SinglestartTime = TimerDo While Timer < startTime + 0.02DoEventsLoopNext i

直接使用我分享的插件

感兴趣的朋友,可以根据我的分享,直接去写一下。但是很多朋友对vba可能不感兴趣,只是想在word中直接使用。

接下来我将手把手分享,如何使用我分享的插件。

首先关注公众号“小铭同学的AI工具学习记录”,发送“Word插件”,即可获取word插件。

第一步:获取大模型的API Key。

这里根据大家自己使用的大模型平台而定。

如果没有使用过,我比较推荐硅基流动这个平台,新用户注册有14元永久额度,很多其它平台额度都是有期限的。

邀请链接:https://cloud.siliconflow.cn/i/Ia3zOSCU。

注册完成之后,点击API密钥,新建一个API密钥。

image-20250217110244129

模型名称在模型广场可以复制,比较推荐的是:deepseek-ai/DeepSeek-R1、deepseek-ai/DeepSeek-V3、meta-llama/Llama-3.3-70B-Instruct、Qwen/Qwen2.5-72B-Instruct-128K与Qwen/Qwen2.5-72B-Instruct。

第二步:在word中导入插件。

关注公众号“小铭同学的AI工具学习记录”,发送“Word插件”,即可获取word插件。

下载下来,如下所示:

image-20250217111511497

文件——》选项——》信任中心——》信任中心设置——》启用所有宏——》确定。

image-20250217122533249

文件——》选项——》自定义功能区——》勾选开发工具。

image-20250217111659589

开发工具——》Visual Basic。

image-20250217111905533

文件——》导入文件——》选择刚刚下载的Word插件。

image-20250217112147489

然后如果使用的是硅基流动,在这两个文件的api_key位置填入自己的api_key即可,如果选择其它平台,如果兼容openai格式,改一下api地址、模型名称然后填入自己的api_key即可。

image-20250217112351894

点击保存,会出现下面这个提示。

image-20250217112451435

选择否,然后启用宏。

image-20250217112537868

可以在不使用这个功能的时候,另存为docx就好了。

回到开发工具,新建一个分组。

image-20250217112744079

选择宏,添加到AI助手中。

image-20250217112915087

现在word就出现了刚刚添加的插件:

image-20250217113030084

第三步:使用插件

选中文本,再点击选择的功能即可。

AI助手是直接提问,AI论文扩写助手是进行论文扩写。

直接提问

image-20250217113436348

AI论文扩写

image-20250217114503471

最后

如果你在实践过程中,遇到了问题,也可以联系我哦。

相关文章:

Word中接入大模型教程

前言 为什么要在word中接入大模型呢&#xff1f; 个人觉得最大的意义就是不用来回切换与复制粘贴了吧。 今天分享一下昨天实践的在word中接入大模型的教程。 在word中接入大模型最简单的方式就是使用vba。 vba代码要做的事&#xff0c;拆分一下就是&#xff1a; 获取用户…...

Centos修改ip

1 查看ip [rootlocalhost ~]# ip addr2 root账号修改ip [rootlocalhost ~]# su [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-scripts]# llvi编辑ifcfg-ens33 3 重启网卡 [rootlocalhost network-scripts]# systemctl restart network...

uni-app小程序开发 基础知识2

目标&#xff1a; 构建一个文章发表平台。 我们先来写一个静态框架。 以下是 首页初代码文章列表页代码&#xff1a; <template><view class"content"><!-- 轮播图 --><swiper class"swiper-container" autoplay"true"…...

第4章 4.1 Entity Framework Core概述

4.1.1 什么是ORM ORM (object tralstional mapping ,对象关系映射)中的“对象”指的就是C#中的对象&#xff0c;而“关系”是关系型数据库&#xff0c;“映射”指搭建数据库与C#对象之间的“桥梁”。 比如使用ORM &#xff0c;可以通过创建C#对象的方式把数据插入数据库而不需…...

在 Spring Boot 中使用 `@Autowired` 和 `@Bean` 注解

文章目录 在 Spring Boot 中使用 Autowired 和 Bean 注解示例背景 1. 定义 Student 类2. 配置类&#xff1a;初始化 Bean3. 测试类&#xff1a;使用 Autowired 注解自动注入 Bean4. Spring Boot 的自动装配5. 总结 在 Spring Boot 中使用 Autowired 和 Bean 注解 在 Spring Bo…...

Langchain vs. LlamaIndex:哪个在集成MongoDB并分析资产负债表时效果更好?

Langchain vs. LlamaIndex&#xff1a;哪个在集成MongoDB并分析资产负债表时效果更好&#xff1f; 随着大语言模型&#xff08;LLM&#xff09;在实际应用中的普及&#xff0c;许多开发者开始寻求能够帮助他们更高效地开发基于语言模型的应用框架。在众多框架中&#xff0c;La…...

Java 中的内存泄漏问题及解决方案

在 Java 中&#xff0c;内存泄漏&#xff08;Memory Leak&#xff09;是指在程序运行过程中&#xff0c;某些对象已经不再使用&#xff0c;但由于引用仍然存在&#xff0c;这些对象无法被垃圾回收器回收&#xff0c;从而导致内存无法释放&#xff0c;最终可能导致系统性能下降甚…...

VS Code 如何搭建C/C++开发环境

目录 1.VS Code是什么 2. VS Code的下载和安装 2.1 下载和安装 2.2.1 下载 2.2.2 安装 2.2 环境的介绍 2.3 安装中文插件 3. VS Code配置C/C开发环境 3.1 下载和配置MinGW-w64编译器套件 3.1.1 下载 3.1.2 配置 3.2 安装C/C插件 3.3 重启VSCode 4. 在VSCode上编写…...

【Linux C/C++开发】Linux系统轻量级的队列缓存mqueue

前言 开发设计时&#xff0c;通常会对业务流程进行模块化&#xff0c;有些流程之间&#xff0c;不要求同步&#xff0c;但又需要传递信息时&#xff0c;如果存储到数据库&#xff0c;效率降低很多&#xff0c;如果是存放在内存是最好的。此时可以选择系统的IPC&#xff08;进程…...

排查生产sql查询缓慢

生产投产检验&#xff0c;发现查询客户明细的接口数据响应需要5秒以上&#xff0c;通过接口可以查询到详细的后端代码 1. 先排查后端的代码实现&#xff0c;并未出现复杂逻辑&#xff0c;那么就应该是sql的问题 2. 通过explain对sql进行解析&#xff0c;发现sql没有走索引 3.…...

idea从远程gitee拉取项目

文章目录 从gitee上面拿到项目地址填写远程地址,并且设置项目保存位置拉取成功 从gitee上面拿到项目地址 填写远程地址,并且设置项目保存位置 拉取成功...

【UCB CS 61B SP24】Lecture 5 - Lists 3: DLLists and Arrays学习笔记

本文内容为构建双向循环链表、使用 Java 的泛型将其优化为通用类型的链表以及数组的基本语法介绍。 1. 双向链表 回顾上一节课写的代码&#xff0c;当执行 addLast() 与 getLast() 方法时需要遍历链表&#xff0c;效率不高&#xff0c;因此可以添加一个指向链表末尾的索引&am…...

软件测试与软件开发之间的关系

软件测试与软件开发的关系 软件测试&#xff08;Software Testing&#xff09;与软件开发&#xff08;Software Development&#xff09;是软件工程中的两个核心环节&#xff0c;它们相辅相成&#xff0c;确保软件的质量和功能满足需求。以下是两者之间的关系解析&#xff1a;…...

QT 建立一片区域某种颜色

绘制一个位于(50, 50)的200x200的红色矩形 #include "widget.h" #include "ui_widget.h" #include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);update(); }Widget::~Widget() {delete…...

LeetCode--23. 合并 K 个升序链表【堆和分治】

23. 合并 K 个升序链表 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 正文 这道题有多种解决方案 堆 比较容易&#xff0c;又比较直观的就是堆排序&#xff0c;将每个节点加入最小根堆中&…...

tp6上传文件大小超过了最大值+验证文件上传大小和格式函数

问题&#xff1a; 最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示&#xff1a; $file $this->request->file(file);{"code": 1,"msg": "上传文件大小超过了最大值&#xff01;","data": {"code": 1,&q…...

解决 Mac 只显示文件大小,不显示目录大小

前言 在使用 mac 的时候总是只显示文件的大小&#xff0c;不显示文件夹的大小&#xff0c;为了解决问题可以开启“计算文件夹”。 步骤 1.进入访达 2.工具栏点击“显示”选项&#xff0c;点击 “查看显示选项” 3.勾选 显示“资源库"文件夹 和 计算所有大小 或者点击…...

分布式大语言模型服务引擎vLLM论文解读

论文地址&#xff1a;Efficient Memory Management for Large Language Model Serving with PagedAttention 摘要 大语言模型&#xff08;LLMs&#xff09;的高吞吐量服务需要一次对足够多的请求进行批处理。然而&#xff0c;现有系统面临困境&#xff0c;因为每个请求的键值…...

快速入门——Vue框架快速上手

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;8.Vue框架快速上手_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 第一节&#xff1a;前端环境准备 编码工具VSCode【www.code.visualstudio.com】/WebStorm也可&am…...

机器学习,我们主要学习什么?

机器学习的发展历程 机器学习的发展历程&#xff0c;大致分为以下几个阶段&#xff1a; 1. 起源与早期探索&#xff08;20世纪40年代-60年代&#xff09; 1949年&#xff1a;Hebb提出了基于神经心理学的学习机制&#xff0c;开启了机器学习的先河1950年代&#xff1a;机器学习的…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...