Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)
说明
本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件,实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口,处理好业务后再用Gin框架实现流失流式输出到前端,前端使用fetch请求+接收到流式的markdown数据展示到GoFly框架的富文本编辑(gfEditor)中。在编辑中可对生产文档内容继续编辑,编辑器的文档可以导出word格式文档(对WPS兼容很好)。
实现思路
1.方便后端实现更多业务逻辑,我们在Go后端实现与DeepSeek API接口对接。
2.使用GoFly框架的富文本编辑器来显示markdown内容
3.DeepSeek API 支持流式输出(Stream),通过设置 "stream": true
,我们可以实现实时显示 AI 回复的效果。这带来了更好的用户体验:
- 即时看到响应内容
- 减少等待时间
- 更自然的对话体验
4.使用fetch请求+接收到流式的markdown数据+一边打字机式输出内容。
5.使用框架富文本编辑器的setMarkdown()方法实现实时显示流式内容,代码如下:
engine.value.setMarkdown(resContent.value, () => {scrollToBottom()});
6.后端使用Gin框架的流式输出返回数据给前端,使用Gin请求上线文,代码如下:
// 创建 HTTP 请求req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData))if err != nil {gf.Failed().SetMsg("创建请求失败").Regin(c)return}req.Header.Set("Content-Type", "application/json")req.Header.Set("Authorization", "Bearer "+authToken)// 设置 HTTP 客户端client := &http.Client{Timeout: time.Second * 50}resp, err := client.Do(req)if err != nil {gf.Failed().SetMsg("请求API没有得到回应").Regin(c)return}defer resp.Body.Close()// 设置响应头,开启流式输出c.Writer.Header().Set("Content-Type", "text/event-stream; charset=utf-8")c.Writer.Header().Set("Cache-Control", "no-cache")c.Writer.Header().Set("Connection", "keep-alive")// 确保 ResponseWriter 支持 Flusherflusher, ok := c.Writer.(http.Flusher)if !ok {gf.Failed().SetMsg("不支持流式输出").Regin(c)return}// 处理流式响应scanner := bufio.NewScanner(resp.Body)for scanner.Scan() {line := scanner.Text()// 处理以 "data: " 开头的行if strings.HasPrefix(line, "data: ") {line = strings.TrimPrefix(line, "data: ")}if line == "[DONE]" {break}if line == "" {continue}// 解析响应内容var chunk ResponseBodyif err := json.Unmarshal([]byte(line), &chunk); err != nil {continue}// 将响应数据逐步发送给客户端for _, choice := range chunk.Choices {content := choice.Delta.Content_, err := c.Writer.WriteString(content) //w.Write([]byte(content))if err != nil {gf.Failed().SetMsg("Failed to write response").Regin(c)return}flusher.Flush() // 刷新缓冲区}}
使用步骤
1.安装
安装方式为去busines后台管理的“开发者工具->代码仓”找到“接入AI-DeepSeek的API实现流式输出和对话”插件点击安装,或者到社区代码市场下载“开发者工具->代码仓”点击 安装本地包 接口安装插件。
2.安装前端导word文档插件
我们用到内容转word文档并下载word文档,所以需要使用转word文档插件,这里我们使用html-docx-js-typescript,所以安装完插件需要再前端框架引入html-docx-js-typescript。引入命令如下:
yarn add html-docx-js-typescript
# 或者
npm install html-docx-js-typescript --save-dev
建议使用yarn,引入成功后重启一下前端 yarn serve 或者npm serve
3.配置API keys
首先你去 DeepSeek开放平台 创建一个key,然后复制 API key 到golfy管理后台的“数据中心->配置管理”找的AI-DeepSeek配置,然后设置authToken值为复制的DeepSeek平台的key值,到此就可以去AI对话中使用了。
功能介绍及使用教程视频
DeepSeek API接入Go语言开发框架集成插件功能和使用说明
相关文章:

Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)
说明 本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件,实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口,处理好业务后再用Gin框架实现流失流式输出到前端,前端使用fetch请求接收到流式的mar…...

Hexo博客Icarus主题不蒜子 UV、PV 统计数据初始化配置
文章首发于 不蒜子 UV、PV 统计数据初始化配置 适用场景 如果你有个运行的网站域名,采用了不蒜子统计 UV、PV等访客和阅读数据,但是有一天,你觉得想要换一个新的域名。当你将网站绑定到新的域名后,突然发现,所有的文章…...

在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
目录 引言 一、历史中的非对称作战:从李牧到八路军的智谋传承 李牧戍边:古代军事博弈中的资源重构 八路军的游击战:现代战争中的智慧延续 二、创业界的逆袭之道:小米与拼多多的资源重构 从MVP到杠杆解 社交裂变与资源错配 …...

SQLAlchemy系列教程:如何执行原生SQL
Python中的数据库交互提供了高级API。但是,有时您可能需要执行原始SQL以提高效率或利用数据库特定的特性。本指南介绍在SQLAlchemy框架内执行原始SQL。 在SQLAlchemy中执行原生SQL SQLAlchemy虽然以其对象-关系映射(ORM)功能而闻名ÿ…...

绪论数据结构基本概念(刷题笔记)
(一)单选题 1.与数据元素本身的形式、相对位置和个数无关的是(B)【广东工业大学2019年829数据结构】 A.数据存储结构 B.数据逻辑结构 C.算法 D.操作 2.在数据结构的讨论中把数据结构从逻辑上分为(C)【中国…...

delphi 正则提取html中的内容
function ExtractTextFromHTML(const HTML: string): string; var RegEx: TRegEx; begin Result := HTML; // 移除<script>标签及其内容 Result := TRegEx.Replace(Result, <script.*?>.*?</script>, , [roIgnoreCase, roSingleLine]); // 移除<s…...

18天 - 常见的 HTTP 状态码有哪些?HTTP 请求包含哪些内容,请求头和请求体有哪些类型?HTTP 中 GET 和 POST 的区别是什么?
常见的 HTTP 状态码有哪些? HTTP 状态码用于指示服务器对客户端请求的响应结果,常见的 HTTP 状态码可以分为以下几类: 1. 信息类(1xx) 100 Continue:客户端应继续发送请求。101 Switching Protocols&…...
从0开始的操作系统手搓教程45——实现exec
目录 建立抽象 实现加载 实现sys_execv !!!提示:因为实现问题没有测试。所以更像是笔记! exec 函数的作用是用新的可执行文件替换当前进程的程序体。具体来说,exec 会将当前正在运行的用户进程的进程体&…...

Android TCP封装工具类
TCP通信的封装,我们可以从以下几个方面进行改进: 线程池优化:使用更高效的线程池配置,避免频繁创建和销毁线程。 连接重试机制:在网络不稳定时,自动重试连接。 心跳机制:保持长连接ÿ…...

解决火绒启动时,报安全服务异常,无法保障计算机安全
1.找到控制面板-安全和维护-更改用户账户控制设置 重启启动电脑解决。...

Spring Boot框架总结(超级详细)
前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等,如果能耐心看完,想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置&#…...

为什么要使用前缀索引,以及建立前缀索引:sql示例
背景: 你想啊,数据库里有些字段,它老长了,就像那种 varchar(255) 的字段,这玩意儿要是整个字段都拿来建索引,那可太占地方了。打个比方,这就好比你要在一个超级大的笔记本上记东西,每…...

Nuxt3 ssr build/dev时区分不同的环境
package.json "scripts": {"build": "nuxt build --dotenv .env.prod","build:dev": "nuxt build --dotenv .env.dev","postbuild": "mv -f .output ./dist/.output", //支持自定义文件名"dev&quo…...

嵌入式学习第二十四天--网络 服务器
服务器模型 tcp服务器: socket bind listen accept recv/send close 1.支持多客户端访问 //单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 2.支持多客户端同时访问 (并发能力) 并发服务器 socket bind …...

tcp/ip协议配置参数有哪些?tcp/ip协议需要设置的参数有哪些
TCP/IP协议的配置参数是确保网络设备能够正确接入互联网并与其他设备进行通信的关键设置。这些参数主要包括以下几个方面: 1. IP地址 定义:IP地址是网络中设备的唯一标识符,用于标识和定位设备。它由32位二进制数组成,通常采用点…...

我有点担心开始AI中台了
有个特点历史教训是很难吸取的 从大数据开始就是一窝蜂的去搞,不管有没有什么数据量。反正要来个Hadoop。其实有些企业数据一块硬盘都放得下。 微服务来了,也不管自己的系统是不是适合微服务。我个人经验得出,to B和to G的业务场景…...

《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》
导语 "你是否想过用Python开发一款可玩性高的双人合作游戏?本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏!包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点,文末提供完整代码包下载!" 哈…...

优选算法系列(1. 双指针_上)
目录 双指针 一:移动零(easy) 题目链接:移动零 解法: 代码: 二:复写零(easy) 题目链接:复写零 编辑 解法: 代码: 三:快乐…...

永洪科技深度分析实战,零售企业的销量预测
随着人工智能技术的不断发展,智能预测已经成为各个领域的重要应用之一。现在,智能预测技术已经广泛应用于金融、零售、医疗、能源等领域,为企业和个人提供决策支持。 智能预测技术通过分析大量的数据,利用机器学习和深度学习算法…...

c语言笔记 函数参数的等价(上)
这三种写法在 C 语言中是等价的,因为它们都用于声明一个指向二维数组的指针,或者用于声明一个二维数组作为函数参数。它们的等价性源于 C 语言中数组和指针之间的密切关系。让我们逐一分析这三种写法: 在C语言中,当数组作为函数参…...

hive面试题--left join的坑
student 表: 课程表course: 1、key为null, 不关联 select * from student s left join course c on s.id c.s_id;2、on中过滤条件 与 where 过滤条件区别 on and c.id<>‘1001’ 先过滤右表数据,然后与左表关联 select * from student s le…...

CEH与OSCP:网络安全认证对比分析
在网络安全领域,渗透测试被视为至关重要的一环,帮助企业检测和修复系统漏洞。为提升行业标准,许多认证应运而生,其中CEH和OSCP作为行业认可度较高的认证,广泛被网络安全从业者选择。尽管这两者都涉及渗透测试领域&…...

HTML 属性详解:为网页元素赋予更多功能
在构建网页的过程中,HTML 是基础的标记语言,而 HTML 属性则是为 HTML 元素提供附加信息的重要组成部分。 一、属性的基本概念与使用 属性通常出现在 HTML 标签的开始标签内,以 “name"value"” 的形式存在。这里的 “name” 是属…...

Ceph(2):Ceph简介
1 Ceph简介 Ceph使用C语言开发,遵循LGPL协议开源。Sage Weil(Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护。2014年Redhat收购inktank公司,并发布Inktank Ceph企业版(ICE)软件,业务场景聚焦云…...

国产编辑器EverEdit - 设置文件类型关联为EverEdit
1 设置-文件关联 1.1 应用场景 文件关联是指在文件管理器中双击某类型的文件,操作系统自动调用可以打开该文件的应用程序,比如:用户双击XXXX.txt文件,系统默认会使用记事本打开该文件。 由于各行各业都会定义特有的文件类型&…...

2025网络安全工程师:软考新挑战与职业发展探析
网络安全工程师的崛起 随着信息技术的迅猛发展,网络安全问题日益凸显,网络安全工程师这一职业逐渐受到社会各界的广泛关注。特别是在2025年,随着各项网络安全法规的完善和实施,网络安全工程师的角色愈发重要。他们不仅是企业信息…...

设计模式之建造者模式:原理、实现与应用
引言 建造者模式(Builder Pattern)是一种创建型设计模式,它通过将复杂对象的构建过程分解为多个简单的步骤,使得对象的创建更加灵活和可维护。建造者模式特别适用于构建具有多个组成部分的复杂对象。本文将深入探讨建造者模式的原…...

【Leetcode 每日一题 - 补卡】2070. 每一个查询的最大美丽值
问题背景 给你一个二维整数数组 i t e m s items items,其中 i t e m s [ i ] [ p r i c e i , b e a u t y i ] items[i] [price_i, beauty_i] items[i][pricei,beautyi] 分别表示每一个物品的 价格 和 美丽值 。 同时给你一个下标从 0 0 0 开始的整数数…...

雪藏HsFreezer(游戏冻结工具) v2.21
HsFreezer 是一款让你可以随心冻结游戏的软件(游戏暂停软件、系统优化软件、进程管理软件),想玩就玩,想停就停,快捷键随心瞬发,单锁模式极致的丝滑切换,当然,不止适用游戏。更有丰富的特色系统优化功能。 PC主机,win掌机,笔记本--无脑装就对了,超大按键超大列表,触控盲操,非常巴…...

2019年蓝桥杯第十届CC++大学B组真题及代码
目录 1A:组队(填空5分_手算) 2B:年号字符(填空5分_进制) 3C:数列求值(填空10分_枚举) 4D:数的分解(填空10分) 5E:迷宫…...