前回の記事、"そのローカル展開 DeepSeek-R1とWeChatボットアクセスチュートリアルDeepSeek-R1 "では、DeepSeek-R1をローカルにデプロイし、WeChatのボットにアクセスしてチャットしてもらいましたが、今日は、もっと面白い遊び方を紹介したいと思います:AIアシスタントに辛口のネタを与えて、本当によく分かっているプロのコンサルタントに変身させる方法です!
次に、環境設定、ナレッジベースの展開、情報のアップロード、チューニングのヒントなど、ナレッジベース構築の全プロセスを手作業で完成させます。最後に、この "知識満載 "のAIをWeChatロボットに搭載し、真にあなたを理解し、業界のインテリジェント・アシスタントを理解するものを作成します!
まず、結果を見てみよう。これは、「人体障害度分類」の情報照会をアップロードした後の結果である:
DeepSeek-R1の展開
ディープシーク デプロイには2つの方法がある。1つはローカルデプロイで、もう1つはサードパーティのAPIにアクセスする方法だ。
両方の長所と短所
- ローカル展開
✅ 利点:完全なプライベートデータ、低長期コスト、迅速なレスポンスタイム
欠点:ローカル演算を食べる、より良い構成のマシンが必要 - APIコール
利点:高速アクセス、メンテナンスフリー、回復力のあるスケーラビリティ
デメリット:データを第三者に渡す必要がある。
ローカル・ディープシーク
まず、以下をインストールしていることを確認してください。 オラマ そして、オラマは正常に機能している。
DeepSeekAPI
実は、この記事はローカル・デプロイメント・アプローチについてだけ書くつもりだったんだ......。
しかし、最近ウェブ版のDeepSeekが "ストライキ中 "なので、仕方なくローカル版を試してみた。 チャットボックス まさかR1の完全版を体験できるとは思っていなかったので、爆笑でした!この解答もいい匂いがしそうなので、ついでにAPI方式で書いておきます。
ここでは2つのプラットフォームを提供する。
まずAPIkeyを取得し、ナレッジベースのコンフィギュレーションにAPIkeyを入力する必要がある。
火山の箱舟
公式サイト
https://console.volcengine.com/ark
物価
入力: ¥2/M トークン
出力:8円/Mトークン
エントリーAPIKey管理
作成APIkey
新しい秘密鍵、APIkeyのコピー
シリコンベースのフロー
シリコンベースのフロー 公式サイト
https://cloud.siliconflow.cn/account/ak
物価
インプット:4円/Mトークン
出力:¥16/Mトークン
の左側に移動する。API秘钥
クリック新建秘钥
コピー後の秘密鍵
リポジトリ
ナレッジベースのインストール
次にナレッジ・ベースにアクセスする必要がある。AnythingLLM
プロジェクトだ。
AnythingLLMはオープンソースのLarge Language Model (LLM)アプリケーションフレームワークであり、ユーザが簡単にインテリジェントなQ&A、文書分析、プライベートデータに基づくその他のアプリケーションを構築、展開できるように設計されています。
AnythingLLMのウェブサイトにアクセスし、インストーラーをダウンロードします。
https://anythingllm.com/
インストーラーを実行し、その間に必要な追加依存関係(GPU、NPGサポート)をダウンロードします。
ダウンロードに失敗した場合、またはこのダウンロードウィンドウを閉じてこのステップをスキップした場合でも、AnythingLLMは正常にインストールされます。
この時点では、手動でインストールできるので心配しないでほしい。
ウェブリンクにはlib
ジップ。
zipアーカイブを解凍し、解凍したフォルダを你的安装目录AnythingLLMresourcesollama
カタログの中
ナレッジベースの構成
インストールが完了したら、AnythingLLM インターフェースに入り、デフォルトのラージモデルを選択する必要があります。
ローカル設定
DeepSeek のローカル配置を使用している場合は、下にスクロールしてOllama
ただ選ぶだけだ。
API設定
サードパーティAPIを使用している場合、このステップを選択する必要はありません。ollama
ここで見つけるGeneric OpenAI
ジェネリックOpenAI:
カスタム設定により、OpenAIのインターフェース形式と互換性のあるあらゆるサービスに接続できます。
ここには5つのパラメータがある。
シリコンベースのフローAPIを使用する:
BaseURL
リクエストアドレス
https://api.siliconflow.cn/v1
APIkey
APIシークレットキーは、先ほど取得したものを記入してください。
ChatModelName
モデル名
Pro/deepseek-ai/ディープシーク-R1
Token context window
(コンテキストウィンドウ)
4096
Max Tokens
(最大トークン数)
状況に応じて4096または8192。
ボルケーノ・アークAPIを使用する:
BaseURL
リクエストアドレス
https://ark.cn-beijing.volces.com/api/v3
APIkey
APIシークレットキーは、先ほど取得したものを記入してください。
ChatModelName
モデル名
ボルケーノ・アークのモデル名には、アクセスポイントIDを入力する必要がある。
まず DeepSeekR1 をオンにします!
オンライン推論へようこそ - アクセスポイントの作成
アクセス確認
このIDはアクセスポイントIDであり、この値を埋めるだけでよい。
Token context window
(コンテキストウィンドウ)
4096
Max Tokens
(最大トークン数)
状況に応じて4096または8192。
上記の設定が完了したら、忘れずに以下をタップしてください。SaveChanage
セーブする。
ワークスペースの作成
このプライバシー・インターフェースへの次のステップは、データを保存する方法を伝えることであり、これらの命令を使用する方法は、とにかく、すべての単語のセットであり、直接次のステップをスキップすることができます。
このステップはウェルカムスクリーンで、特別なことは何もない!
ワークスペースの名前を作成する。 英語を使うことを推奨する。後でAPIを使って呼び出すときに便利だからだ。
次のように入力する。 AnythingLLM
ゲームのメインインターフェイスができました。サンプルダイアログで遊び方を教えてくれます。
左側のワークスペースをクリックすると、新しいダイアログ画面が表示されます。
モデルの呼び出しが成功したかどうかをテストする簡単なダイアログを以下に示す。
ワークスペースの設定
ワークスペースの右側にある Setup ボタンをクリックして、Setup インターフェイスに入ります。
チャットの設定に移動し、そこでモデルを詳細に調整することができる。
ここで、現在使用されているラージモデルを調整します。デフォルトでは、システムによって設定されたものが使用されます。ollama
その他の大規模なローカルモデルやAPIサービスも利用できる。
モードはチャットとクエリに分かれており、クエリはクエリコンテキスト機能のみを使用することを意味します(あなた自身のアップロードされたドキュメントを持っている必要があります)、チャットはチャット機能+クエリを使用することを意味します。
コンテキスト数
ペルソナのキューワードとして解釈することができ、中国語に修正することも、デフォルトのままにしておくこともできる。
給餌情報
次にナレッジベースをフィードする必要があります。上传按钮
ナレッジベース管理インターフェースへのアクセス
バッチアップロードをサポートし、Excel、world、txt、その他のファイル形式をサポートしています。ここでは《人体损伤致残程度分级》.pdf
.
ファイルを選択しMove to WorkSpace
このステップでは、一時領域からファイルをワークスペースに追加する。
アップロードされたファイルは右側に転送されます。Sace and Embed
セーブをする。
以下のヒントWorkSpace updated successfully
セーブに成功したことを示す。
をクリックしてください。Pin to workspace
このボタンだ。
ワークスペースにピン留め::
AnythingLLMを使用する際、デフォルトでは満足のいく回答が得られない場合、ドキュメントをピン留めすることで回答の質を向上させることができます。これは、回答の正確性と関連性を向上させる簡単な方法です。
簡単に言えば、ドキュメントのピン留めとは、ドキュメントのコンテンツを言語モデルに直接「送り込む」プロセスであり、質問に答える際にそのコンテンツを参照し、より良い回答を提供できるようにする。
その後、会話ページに戻り、新しい会話を作成し、質問をして、ナレッジベースが正常に追加されたことを確認します。
エラー解決
DeepSeekはアップロードされた情報と組み合わせて質問に答えていますが、答えに誤りがあることがわかります。
例えば、最初の質問:
と尋ねている:
肋骨を2本折った場合のグレードは?
答えてくれ:
提供された背景情報に基づき、肋骨骨折の人身傷害障害分類基準は以下の通りである:
重傷度グレード2:4本以上の肋骨の骨折、または2本以上の肋骨の骨折で、逆説的な動きを伴うもの;
第1度の軽傷:第1肋骨から第3肋骨の骨折。
肋骨2本の骨折の場合、逆説的活動や他の重篤な状態(例:4本以上)を伴わなければ、軽度の第1度損傷に分類される。このように、肋骨2本の骨折は等級付けされます:
軽傷
しかし、アップロードされた文書では、肋骨2本の骨折は第2級の軽傷に分類されている。これは法律相談の申請書としてはかなり重大な誤りである。
このように質問に答えられない場合、焦る必要はない。
アップロードされたPDFファイルをよく見てみると、たくさんの表や特殊な書式、そして使われていないコンテンツが含まれていた。これらの "不純物 "は、AIが本当に学習させたいことを理解する能力に影響を与える。
このような乱雑な書式設定は、私たちが乱雑な本を見るときのように、AIが重要なポイントを見失う可能性がある。そこで、私は重要な内容を簡潔なワード文書に再編成し、使用できない内容を削除してから、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パラメーターの調整などを試すこともできる。しかし、これらの高度なプレイについては後で説明する。
WeChat BOTへのアクセス
AnythingLLM秘密鍵の取得
見せるAnythingLLM
インターフェイスで、「設定」-「APIシークレットキー」-「新しいAPIシークレットキーの生成」を選択します。
統合パックの使用
私はAnythingLLM
へのインターフェースNGCBOT
で、統合パッケージにした。
のウェブリンクを解凍します。NGCBOT_LLM.zip
Zipをダブルクリックする启动器.exe
走る準備はできている。
使用する前に3つ必要なことがある!
使用する前に3つ必要なことがある!
使用する前に3つ必要なことがある!
まず、統合パッケージのディレクトリに中国語がないことを確認してください。中国語があるとエラーになります!
正しいデモンストレーション
F:AIAIpackageNGCBot
偽りのデモンストレーション
F:微信BOTAIpackageNGCBot
次に、WeChatの指定バージョンをインストールする。
ウェブリンクにマイクロソフト版がある。
WeChatSetup-3.9.10.27.exe
このバージョンをインストールすると、コンピュータがもともとマイクロソフトを持っていた削除する必要はありませんが、直接インストールを上書きします。
第三に、NGCBOT設定ファイルを修正します。
を十分に理解する必要がある。ConfigConfig.yaml
コンフィギュレーション・ファイルは変更できる。
設定ファイルには3つの変更がある。
1.スーパー管理者設定を変更する。
ここに、設定したマイクロシグナルのIDを記入する。常に変更することを忘れないように!さもなければ、すべて私に送られます.
このIDはどうやって取得できますか?管理者として設定したいマイクロシグナルを使用し、ボットにメッセージを送信すると、コンソールにメッセージを送信した人のIDが表示されます。
2.ai優先順位の設定を変更する。
これはaiインターフェースの実行順で、前の数字が小さいほど優先度が高いことを意味する。デフォルトの設定はAnythingLLM優先である。
3.AnythingLLMの設定。
ここでworkspace
そしてAnythingLLMkey
この2つの値はちょうどいい。
workspace
AnythingLLMで作成したワークスペースの名前を小文字で記入します。
AnythingLLMkey
AnythingLLMで入手したシークレットキーを記入してください。シリコンフローやボルケーノ・アークの秘密鍵ではありません!
その前にベアラーを残すことを忘れずに。
上記の手順で変更した後启动器.exe
そうすれば楽しめる!
統合パック獲得は記事の最後にある。
おめでとう!これを見た人は 👍🏻👍🏻
ナレッジベースのボットをすぐに使いたい場合は、こちらをご覧ください。
もっと深く掘り下げたい小さな子供たちのために、こんなことが書かれている。
- AnythingLLMインターフェースの呼び出し方
- NGCBOTの機能を拡張する方法
興味があれば読んでみてほしい。
開発と拡大
インターフェイスコール
もしあなたが初心者で、統合パックを直接プレーしたいのであれば、このステップは飛ばしてください。
よし、もう少し高度なことをやろう。 ブラウザのインプット[http://localhost:3001/api/docs/](http://localhost:3001/api/docs/)
APIページにアクセスする。
ここでは、オリジナルの公式APIドキュメントにウェブ上でアクセスできないため、APIドキュメントへのローカルアクセスに変更されている。
APIの説明ページに入ると、様々なインターフェースがあることがわかる。そして、このページでは直接デバッグをサポートしている。
アクセスを開始する前に、秘密鍵を認証する必要があります。Authorize
.
開いている画面にAnythingLLMAPIキーを貼り付けると、認証が成功します!
そして、下に降りて/v1/workspace/{slug}/chat
このAPI
パラメータの説明
パラメトリック | 指示 | 備考 |
---|---|---|
スラッグ | ワークスペース | 漢字、大文字、その他の特殊文字は使用せず、小文字のみとする。 |
メッセージ | メッセージ | 送信したいメッセージ |
モード | パラダイム | スキーマはチャットとクエリに分かれており、クエリとはクエリ・コンテキスト機能のみを使用すること(自分でアップロードした文書が必要)、チャットとはチャット機能を使用することである。 |
リクエストの例(リクエスト本文)
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"
}'
回答
{
"id": "488ff13e-0206-4014-bf50-ea2d8e78c1c3",
"type": "textResponse",
"close": true,
"error": null,
"chatId": 17,
"textResponse": "<think>n好的,我现在需要解决用户的问题:“两根肋骨骨折是什么等级?” 用户之前已经询问过这个问题,并且我给出了一个回答,但现在他再次提问,可能希望得到更详细或不同的解释。nn首先,回顾一下上下文。在提供的Context 0中,5.6.4轻伤二级部分提到了b)肋骨骨折2处以上属于轻伤二级。因此,两根肋骨骨折符合这一标准,应定级为轻伤二级。nn用户可能是一名法律工作者、家属或受伤者本人,想要了解骨折的严重程度以便处理工伤赔偿或其他相关事宜。他们可能对分级标准不太熟悉,所以才会多次询问。nn在思考过程中,我需要确认是否还有其他相关的评定标准会影响结果。例如,是否有特殊情况如骨折的位置、是否伴随内脏损伤等,这些因素可能会改变评定等级。但根据提供的Context,没有提到这些情况,因此只能基于给出的信息进行判断。nn此外,用户可能希望知道如何申请工伤认定或后续的赔偿流程,但由于信息有限,我无法提供具体步骤,但可以建议他们联系劳动保障部门或医疗机构获取专业指导。nn总结来说,两根肋骨骨折属于轻伤二级,这是根据提供的标准得出的结论。用户可能需要进一步的法律或医疗咨询来处理相关事宜。n</think>nn根据您提供的上下文信息:nn在 **5.6.4 轻伤二级** 中提到:n- **b) 肋骨骨折2处以上**。nn因此,**两根肋骨骨折属于轻伤二级**。",
"sources": [
{
"text": "5.2.4轻伤二级nna)面部单个创口或者瘢痕长度4.5cm 以上;多个创口或者瘢痕长度累计6.0cm 以上。nnb)面颊穿透创,皮肤创口或者瘢痕长度1.0cm以上。nnc)口唇全层裂创,皮肤创口或者瘢痕长度1.0cm 以上。nnd) 面部块状瘢痕,单块面积3.0cm²以上或多块面积累计5.0cm²以上。nne) 面部片状细小瘢痕或者色素异常,面积累计8.0cm²以上。f)眶壁骨折(单纯眶内壁骨折除外)。nng)眼睑缺损。nnh) 一侧眼睑轻度外翻。nni) 一侧上眼睑下垂覆盖瞳孔。nnj) 一侧眼睑闭合不全。nnk)一侧泪器损伤伴溢泪。nn1)耳廓创口或者瘢痕长度累计6.0cm以上。nnm)耳廓离断、缺损或者挛缩畸形累计相当于一侧耳廓面积15%以上。n)鼻尖或者一侧鼻翼缺损。nno) 鼻骨粉碎性骨折;双侧鼻骨骨折;鼻骨骨折合并上颌骨额突骨折;鼻骨骨折合并鼻中隔骨折;双侧上颌骨额突骨折。nnp) 舌缺损。nnq) 牙齿脱落或者牙折2枚以上。nnr) 腮腺、颌下腺或者舌下腺实质性损伤。nns) 损伤致张口困难I 度 。nnt)颌骨骨折(牙槽突骨折及一侧上颌骨额突骨折除外)。u)颧骨骨折。nn5.2.5轻微伤nnnnnnnnnna)面部软组织创。nnb)面部损伤留有瘢痕或者色素改变。nnc) 面部皮肤擦伤,面积2.0cm²以上;面部软组织挫伤;面部划伤4.0cm以上。nnd)眶内壁骨折。nne)眼部挫伤;眼部外伤后影响外观。nnf) 耳廓创。nng) 鼻骨骨折;鼻出血。h)上颌骨额突骨折。nni) 口腔粘膜破损;舌损伤。nnj) 牙齿脱落或者缺损;牙槽突骨折;牙齿松动2枚以上或者Ⅲ度松动1枚以上。nn5.3 听器听力损伤nn5.3. 1重伤一级nna) 双耳听力障碍(≥91dB HL)。nn5.3.2重伤二级nna) 一耳听力障碍(≥91dB HL)。nnb) 一耳听力障碍(≥81dB HL),另一耳听力障碍(≥41dB HL)。nnc) 一耳听力障碍(≥81dB HL),伴同侧前庭平衡功能障碍。nnd) 双耳听力障碍(≥61dB HL)。nne) 双侧前庭平衡功能丧失,睁眼行走困难,不能并足站立。nn5.3.3轻伤一级nna)双耳听力障碍(≥41dB HL)。nnb)双耳外耳道闭锁。nn5.3.4轻伤二级nna) 外伤性鼓膜穿孔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インターフェースの呼び出しテストが完了しました。このインターフェースに従って、独自のビジネスロジックを実装することができます。以下では、WeChat BOTを組み合わせて知識ベースロボットを実装します。
NGCの修正
NGCBOTのプロジェクトは、次のようなものでなければならない。ApiServerAiServerAiDialogue.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}'}]
を追加する。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'] }
統合パック取得
トゥッツィー・ラボ - ウィンダウンズ・エディション
クオーク
https://pan.quark.cn/s/8d1293227cf9
バイドゥ
https://pan.baidu.com/s/1wx8LmbY2XBaJAAJvmGK06g?pwd=8d5m