先來看下效果,這是我上傳了一份《人體損傷致殘程度分級》資料詢問后的結果:

DeepSeek-R1部署

DeepSeek部署有兩種方式,一種是本地部署、一種是接入第三方API

這兩種的優缺點:

本地DeepSeek

首先你本機需要確保已經安裝ollama,并且ollama能正常運行。

DeepSeekAPI

其實我原本打算這篇文章只寫本地部署的方式的…..

不過呢,由于 DeepSeek 網頁版最近一直在”罷工”,我被迫嘗試了本地 ChatBox 工具來接入 API。沒想到體驗了一把滿血版的 R1,爽得飛起!覺得這個方案也很香,所以就順手把 API 的方式也寫進來。

這里我提供兩個平臺,大家自行選擇接入。

先要獲取APIkey,后續我們需要將APIkey填入知識庫配置中。

火山方舟

官網
https://console.volcengine.com/ark

價格

輸入:¥2/ M Tokens

輸出:¥8/ M Tokens

進入側的APIKey管理,創建APIkey

新建秘鑰,復制APIkey

硅基流動

官網

https://cloud.siliconflow.cn/account/ak

價格

輸入:¥4/ M Tokens

輸出:¥16/ M Tokens

進入左側的API秘鑰,點擊新建秘鑰后復制秘鑰

知識庫

知識庫安裝

接著我們需要接入知識庫,這里使用AnythingLLM這個項目。

AnythingLLM 是一個開源的大語言模型(LLM)應用框架,旨在幫助用戶輕松構建和部署基于私有數據的智能問答、文檔分析等應用。

進入官網并下載安裝程序

https://anythingllm.com/

運行安裝程序,中間會下載所需要的額外依賴項(GPU、NPG支持)

如果下載失敗了,或者是你關閉這個下載窗口跳過了這一步,AnythingLLM還是會成功安裝。

這個時候不要擔心,可以手動進行安裝。

網盤鏈接中有一個lib壓縮包。

解壓壓縮包,并將解壓后的文件夾放入你的安裝目錄\AnythingLLM\resources\ollama目錄內。

知識庫配置

安裝完成,進入AnythingLLM界面,這里需要選擇一個默認的大模型

本地配置

如果你使用的是本地部署DeepSeek的方式,向下拉找到Ollama選擇即可。

API配置

如果你使用的是第三方API,這一步不需要選擇ollama,向下找到Generic OpenAI

Generic OpenAI:

通過自定義配置連接到任何兼容OpenAI接口格式的服務。

這里需要填寫5個參數

使用硅基流動API:

BaseURL請求地址

https://api.siliconflow.cn/v1

APIkeyAPI秘鑰,填寫剛才獲取的即可

ChatModelName模型名稱

Pro/deepseek-ai/DeepSeek-R1

Token context window(上下文窗口)

4096

Max Tokens(最大tokens數量)

4096或者是8192根據自己情況來

使用火山方舟API:

BaseURL請求地址

https://ark.cn-beijing.volces.com/api/v3

APIkeyAPI秘鑰,填寫剛才獲取的即可

ChatModelName模型名稱

這里比較特殊,火山方舟模型名稱需要填寫接入點ID。我們需要去平臺上創建接入點。

首先先開通DeepSeekR1的服務

來到在線推理–創建接入點

確認接入

這個ID就是接入點ID,填寫這個值即可。

Token context window(上下文窗口)

4096

Max Tokens(最大tokens數量)

4096或者是8192根據自己情況來

以上設置完成后,別忘了點SaveChanage保存。

工作區創建

下一步進入這個隱私界面,就是告訴你數據怎么存、怎么用的那些說明書,反正都是套話,直接跳過下一步就可以

這一步是歡迎界面,沒啥特別的,直接跳過它

這里創建一個工作區名稱,建議使用英文,因為要是后面想用 API 來調用的話,這個名字可就派上用場了。

現在進入 AnythingLLM 的主界面了。它會用一段示例對話來教你怎么玩

點擊左邊我們剛才起好名字的工作區,進入新的對話界面。

這里簡單對話來測試模型是否調用成功。

工作區設置

點擊工作區右側的設置按鈕進入設置界面。

進入聊天設置,我們可以在這里對模型進行細節上的調整

這里是調整當前使用的大模型。默認使用系統設置的,也就是剛才設置的ollama

也可以選擇其他本地大模型或是API服務

模式分聊天和查詢,查詢表示只使用查詢上下文功能(需要有自己上傳的文檔),聊天表示使用聊天功能+查詢

上下文數量

你可以理解為是人設提示詞,可以修改為中文,也可以保持默認。

投喂資料

接下來需要給知識庫投喂資料,點擊工作區旁的上傳按鈕

進入知識庫管理界面

支持批量上傳,支持Excel、world、txt等文件格式。這里我上傳了一個《人體損傷致殘程度分級》.pdf

選中文件,點擊Move to WorkSpace,這一步是將臨時區的文件加入到工作空間。

可以看到上傳的文件轉移至右邊,這里點擊Sace and Embed進行保存。

下方提示WorkSpace updated successfully表示保存成功。

這里需點擊Pin to workspace這個按鈕。

Pin to workspace

如果在使用 AnythingLLM 時,發現默認情況下沒有得到滿意的答案,那么可以通過釘住文檔來提高回答質量。這是一種快速提升回答準確性和相關性的方法。

簡單來說,文檔釘住就是把文檔內容直接“喂”給語言模型,讓它在回答問題時能夠參考這些內容,從而提供更好的答案。

然后我們回到對話頁面,新建一個對話,提問問題,驗證知識庫是否添加成功。

誤差解決

可以看到DeepSeek已經結合上傳的資料進行回答,但是回答的問題有誤差。

比如第一個問題:

問:

兩根肋骨骨折是什么等級?

答:

根據提供的上下文信息,人體損傷致殘程度分級標準中關于肋骨骨折的規定如下:

重傷二級:四肋以上骨折或者兩肋以上并有反常活動;

輕傷一級:一至三肋骨骨折。

對于兩根肋骨骨折的情況,如果沒有伴隨反常活動或其他嚴重情況(如超過四根),則屬于輕傷一級。因此,兩根肋骨骨折的等級是:

輕傷一級

但這在上傳的文件中,兩根肋骨骨折屬于輕傷二級。這對于法律咨詢方面的應用來說是比較嚴重的錯誤。

遇到這種回答不準的問題,也不用著急,我們來排查下原因。

我仔細看了下上傳的 PDF 文件,發現里面有很多表格、特殊格式,還有一大堆用不到的內容。這些”雜質”會影響 AI 理解我們真正想要它學習的內容。

這些雜亂的格式會讓 AI 抓不住重點,就像我們看到一本亂糟糟的書一樣,所以我把關鍵內容重新整理成了一個簡潔的 Word 文檔,刪掉了那些用不到的內容,然后重新喂給了 AI。

整理后的文檔內容節選:

5.6.4輕傷二級
b)肋骨骨折2處以上。
c) 胸骨骨折;鎖骨骨折;肩胛骨骨折。
d)胸鎖關節脫位;肩鎖關節脫位。
e) 胸部損傷,致皮下氣腫1周不能自行吸收。
f) 胸腔積血;胸腔積氣。
g)胸壁穿透創。
h)胸部擠壓出現窒息征象。
5.6.5輕微傷
a)肋骨骨折;肋軟骨骨折。
5.7 腹部損傷
5.7. 1重傷一級
a)肝功能損害(重度)。
b)胃腸道損傷致消化吸收功能嚴重障礙,依賴腸外營養。
c) 腎功能不全(尿毒癥期)。

再試著問了一遍,這次回答準確多了!

這只是最簡單的解決方案。如果你想讓 AI 回答得更準確,還可以試試調整文檔格式、優化搜索方式、調整 AI 參數等方法。不過這些高級玩法我們后面再聊。

接入微信BOT

獲取AnythingLLM秘鑰

打開AnythingLLM界面,進入設置-API秘鑰-生成新的API秘鑰

使用整合包

我已經將AnythingLLM的接口接入到NGCBOT中并制做成整合包。

解壓網盤鏈接中的NGCBOT_LLM.zip壓縮包,雙擊啟動器.exe即可運行。

在使用之前需要做三件事!

在使用之前需要做三件事!

在使用之前需要做三件事!

第一,確認你整合包目錄下沒有中文,有中文必報錯!

正確示范

F:\AI\AIpackage\NGCBot

錯誤示范

F:\微信BOT\AIpackage\NGCBot

第二,安裝指定版本微信。

在網盤鏈接中有一個微信版本

WeChatSetup-3.9.10.27.exe

安裝這個版本,電腦上原本有微信不用刪除,直接覆蓋安裝。

第三,修改NGCBOT的配置文件。

需要對Config\Config.yaml配置文件就行修改。

配置文件一共修改三處

1.修改超級管理員配置。

這里填入你設定的微信號的ID,記住一定要改!不然都發給我了….

這個ID如何獲取?用你想設為管理員的微信號,給機器人發個消息,然后在控制臺就能看到發送消息人的id。

2.修改ai優先級配置。

這里是ai接口執行的次序,前面的數字越小代表優先執行。默認設定是AnythingLLM優先。

3.AnythingLLM配置。

這里需要修改workspaceAnythingLLMkey這兩個值就好。

workspace填寫你AnythingLLM創建的工作區的名稱,就是那個小寫的。

AnythingLLMkey填寫你AnythingLLM中獲取的秘鑰。不是硅基流動或者是火山方舟的那個秘鑰!!

記住前面的Bearer不要去掉

按照以上步驟修改后,雙擊啟動器.exe就可以愉快的玩耍咯!

整合包獲取在文章末尾。

恭喜你!看到這里的都是????????

如果你只想快速上手玩轉知識庫機器人,看到這里就可以。

下面是寫給想深入研究的小伙伴的內容

感興趣的可以繼續往下看

開發拓展

接口調用

此步驟適合想拓展開發研究的小伙伴,如果你是小白,想直接玩整合包,請跳過此步驟。

OK,我們來玩點高級的,瀏覽器輸入[http://localhost:3001/api/docs/](http://localhost:3001/api/docs/)進入API頁面。

這里由于官方原本的API文檔網頁訪問不了,所以改成本地訪問API文檔。

進入API說明網頁后,可以看到這里面有各種各樣的接口。并且支持在這個網頁上直接進行調試。

在開始接入之前,我們需要授權一下秘鑰,點擊Authorize

在打開的界面將AnythingLLMAPI秘鑰粘貼進去,授權成功

接著向下找到/v1/workspace/{slug}/chat這個API

參數說明

參數說明備注
slug工作空間拒絕中文字符、大寫等特殊字符,只能小寫
message消息內容你要發送的消息
mode模式模式分chat和query,query表示只使用查詢上下文功能(需要有自己上傳的文檔),chat表示使用聊天功能

請求示例(Request body)

curl --location 'http://localhost:3001/api/v1/workspace/newwork/chat' \
--header 'Authorization: Bearer 7X26VBD-0824RMG-MD0VV2X-PC02ZJ4' \
--header 'Content-Type: application/json' \
--data '{
"message": "兩根肋骨骨折是什么等級?",
"mode": "chat"
}'

Responses

{
"id": "488ff13e-0206-4014-bf50-ea2d8e78c1c3",
"type": "textResponse",
"close": true,
"error": null,
"chatId": 17,
"textResponse": "<think>\n好的,我現在需要解決用戶的問題:“兩根肋骨骨折是什么等級?” 用戶之前已經詢問過這個問題,并且我給出了一個回答,但現在他再次提問,可能希望得到更詳細或不同的解釋。\n\n首先,回顧一下上下文。在提供的Context 0中,5.6.4輕傷二級部分提到了b)肋骨骨折2處以上屬于輕傷二級。因此,兩根肋骨骨折符合這一標準,應定級為輕傷二級。\n\n用戶可能是一名法律工作者、家屬或受傷者本人,想要了解骨折的嚴重程度以便處理工傷賠償或其他相關事宜。他們可能對分級標準不太熟悉,所以才會多次詢問。\n\n在思考過程中,我需要確認是否還有其他相關的評定標準會影響結果。例如,是否有特殊情況如骨折的位置、是否伴隨內臟損傷等,這些因素可能會改變評定等級。但根據提供的Context,沒有提到這些情況,因此只能基于給出的信息進行判斷。\n\n此外,用戶可能希望知道如何申請工傷認定或后續的賠償流程,但由于信息有限,我無法提供具體步驟,但可以建議他們聯系勞動保障部門或醫療機構獲取專業指導。\n\n總結來說,兩根肋骨骨折屬于輕傷二級,這是根據提供的標準得出的結論。用戶可能需要進一步的法律或醫療咨詢來處理相關事宜。\n</think>\n\n根據您提供的上下文信息:\n\n在 **5.6.4 輕傷二級** 中提到:\n- **b) 肋骨骨折2處以上**。\n\n因此,**兩根肋骨骨折屬于輕傷二級**。",
"sources": [
{
"text": "5.2.4輕傷二級\n\na)面部單個創口或者瘢痕長度4.5cm 以上;多個創口或者瘢痕長度累計6.0cm 以上。\n\nb)面頰穿透創,皮膚創口或者瘢痕長度1.0cm以上。\n\nc)口唇全層裂創,皮膚創口或者瘢痕長度1.0cm 以上。\n\nd) 面部塊狀瘢痕,單塊面積3.0cm2以上或多塊面積累計5.0cm2以上。\n\ne) 面部片狀細小瘢痕或者色素異常,面積累計8.0cm2以上。f)眶壁骨折(單純眶內壁骨折除外)。\n\ng)眼瞼缺損。\n\nh) 一側眼瞼輕度外翻。\n\ni) 一側上眼瞼下垂覆蓋瞳孔。\n\nj) 一側眼瞼閉合不全。\n\nk)一側淚器損傷伴溢淚。\n\n1)耳廓創口或者瘢痕長度累計6.0cm以上。\n\nm)耳廓離斷、缺損或者攣縮畸形累計相當于一側耳廓面積15%以上。n)鼻尖或者一側鼻翼缺損。\n\no) 鼻骨粉碎性骨折;雙側鼻骨骨折;鼻骨骨折合并上頜骨額突骨折;鼻骨骨折合并鼻中隔骨折;雙側上頜骨額突骨折。\n\np) 舌缺損。\n\nq) 牙齒脫落或者牙折2枚以上。\n\nr) 腮腺、頜下腺或者舌下腺實質性損傷。\n\ns) 損傷致張口困難I 度 。\n\nt)頜骨骨折(牙槽突骨折及一側上頜骨額突骨折除外)。u)顴骨骨折。\n\n5.2.5輕微傷\n\n\n\n\n\n\n\n\n\na)面部軟組織創。\n\nb)面部損傷留有瘢痕或者色素改變。\n\nc) 面部皮膚擦傷,面積2.0cm2以上;面部軟組織挫傷;面部劃傷4.0cm以上。\n\nd)眶內壁骨折。\n\ne)眼部挫傷;眼部外傷后影響外觀。\n\nf) 耳廓創。\n\ng) 鼻骨骨折;鼻出血。h)上頜骨額突骨折。\n\ni) 口腔粘膜破損;舌損傷。\n\nj) 牙齒脫落或者缺損;牙槽突骨折;牙齒松動2枚以上或者Ⅲ度松動1枚以上。\n\n5.3 聽器聽力損傷\n\n5.3. 1重傷一級\n\na) 雙耳聽力障礙(≥91dB HL)。\n\n5.3.2重傷二級\n\na) 一耳聽力障礙(≥91dB HL)。\n\nb) 一耳聽力障礙(≥81dB HL),另一耳聽力障礙(≥41dB HL)。\n\nc) 一耳聽力障礙(≥81dB HL),伴同側前庭平衡功能障礙。\n\nd) 雙耳聽力障礙(≥61dB HL)。\n\ne) 雙側前庭平衡功能喪失,睜眼行走困難,不能并足站立。\n\n5.3.3輕傷一級\n\na)雙耳聽力障礙(≥41dB HL)。\n\nb)雙耳外耳道閉鎖。\n\n5.3.4輕傷二級\n\na) 外傷性鼓膜穿孔6周不能自行愈合。b...continued on in source document...",
"id": "210f98f0-d656-4c0f-b3d5-d617f6398eca",
"url": "file://C:\\Users\\XX\\AppData\\Roaming\\anythingllm-desktop\\storage\\hotdir\\新建 DOCX 文檔.docx",
"title": "新建 DOCX 文檔.docx",
"docAuthor": "no author found",
"description": "No description found.",
"docSource": "pdf file uploaded by the user.",
"chunkSource": "localfile://C:\\Users\\XX\\Desktop\\新建 DOCX 文檔.docx",
"published": "2025/2/7 13:00:52",
"wordCount": 126,
"token_count_estimate": 3870
}
],
"metrics": {
"prompt_tokens": 431,
"completion_tokens": 326,
"total_tokens": 757,
"outputTps": 63.178294573643406,
"duration": 5.16
}
}

這樣我們完成了AnythingLLM接口的調用測試。根據這個接口你可以實現自己的業務邏輯,下面我們結合微信BOT來實現知識庫機器人。

NGC修改

NGCBOT項目中需要在ApiServer\AiServer\AiDialogue.py腳本中增加調用AnythingLLM的邏輯。

這里我直接放代碼。

def getAnythingLLM(self, content, messages):
"""
本地 AnythingLLM 模型
:param content: 對話內容
:param messages: 消息列表
:return:
"""
op(f'[*]: 正在調用本地AnythingLLM對話接口... ...')
messages.append({"role": "user", "content": f'{content}'})

data = {
"model": self.anythingLLMConfig.get('anythingllmModel'),
"message": content
}

headers = {
"Content-Type": "application/json",
"Authorization": self.anythingLLMConfig.get('anythingllmKey')
}

try:
resp = requests.post(
url=self.anythingLLMConfig.get('anythingllmApi').format(workspace=self.anythingLLMConfig.get('workspace')),
headers=headers,
json=data,
timeout=300
)

resp.encoding = 'utf-8'
json_data = resp.json()

assistant_content = json_data['textResponse']

if "</think>" in assistant_content:
assistant_content = assistant_content.split("</think>")[1].strip()

messages.append({"role": "assistant", "content": f"{assistant_content}"})
if len(messages) == 21:
del messages[1]
del messages[2]
return assistant_content, messages
except Exception as e:
op(f'[-]: 本地AnythingLLM對話接口出現錯誤, 錯誤信息: {e}')
return None, [{"role": "system", "content": f'{self.systemAiRole}'}]

init中添加anythingLLMConfig

self.anythingLLMConfig = {
'anythingllmApi': configData['apiServer']['aiConfig']['AnythingLLM']['AnythingllmApi'],
'anythingllmKey': configData['apiServer']['aiConfig']['AnythingLLM']['AnythingllmKey'],
'anythingllmModel': configData['apiServer']['aiConfig']['AnythingLLM']['AnythingllmModel'],
'workspace': configData['apiServer']['aiConfig']['AnythingLLM']['workspace']
}

本文章轉載微信公眾號@嘟嘟實驗室

上一篇:

DeepSeek 技術分析 — (4)DualPipe

下一篇:

DeepSeek 使用指南:從 API Key 到本地部署,一步到位,推薦 3 款 AI 客戶端
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費