說明
本文是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語言開發框架集成插件功能和使用說明