Реализация локальной/API-базы знаний на основе DeepSeek-R1 и доступ к WeChat BOT
В предыдущей статье "TheУчебники по локальному развертыванию DeepSeek-R1 и доступу к WeChat BotВ "DeepSeek-R1" мы развернули DeepSeek-R1 локально и запустили бота WeChat для общения с нами, но сегодня я хочу поделиться с вами более интересным способом игры с ним: как накормить нашего ИИ-помощника сухими вещами, чтобы он превратился в профессионального консультанта, который действительно знает, что делает!
Далее я проведу вас за руку по всему процессу создания базы знаний, включая настройку среды, развертывание базы знаний, загрузку информации, а также некоторые детали советов по настройке. Наконец, мы поместим этот "полный знаний" ИИ в робота WeChat, чтобы создать действительно понимающего вас, понимающего интеллектуального помощника отрасли!

Во-первых, давайте посмотрим на результат. Это результат после того, как я загрузил информационный запрос "Классификация инвалидности при травмах человека":

Развертывание DeepSeek-R1
DeepSeek Существует два способа развертывания: локальное и с помощью сторонних API.
Плюсы и минусы обоих вариантов:
- локальное развертывание
✅ Преимущества: полностью частные данные, низкие долгосрочные затраты, оперативность.
❌ Недостатки: потребляет локальную арифметику, требует машин с лучшей конфигурацией. - Вызов API
✅ Преимущества: быстрый доступ, не требует обслуживания, устойчивая масштабируемость
❌ Недостатки: данные необходимо передавать третьей стороне, долгосрочные затраты не поддаются контролю
Местный DeepSeek
Сначала вам нужно убедиться, что вы установили оллама и оллама функционирует должным образом.
DeepSeekAPI
На самом деле я собирался написать этот пост только о подходе к локальному развертыванию ......
Однако, поскольку веб-версия DeepSeek в последнее время "бастует", я был вынужден попробовать локальную версию. ChatBox Я не ожидал увидеть полнокровную версию R1, и это было здорово! Я думаю, что это решение также хорошо пахнет, так что я напишу в API способ, кстати.
Здесь я предоставляю вам две платформы на выбор.
Сначала нам нужно получить API-ключ, а затем заполнить им конфигурацию базы знаний.
вулканический ковчег
официальный сайт
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), разработанный для того, чтобы помочь пользователям легко создавать и развертывать интеллектуальные приложения для вопросов и ответов, анализа документов и других приложений, основанных на частных данных.
Перейдите на сайт AnythingLLM и загрузите программу установки.
https://anythingllm.com/

Запустите программу установки, между делом она загрузит необходимые дополнительные зависимости (GPU, поддержка NPG).

Если загрузка не удалась или если вы закроете окно загрузки и пропустите этот шаг, AnythingLLM все равно успешно установится.
Не волнуйтесь, сейчас вы можете выполнить установку вручную.
Веб-ссылка имеетlib
Молния.
Распакуйте zip-архив и поместите извлеченную папку в папку你的安装目录AnythingLLMresourcesollama
Внутри каталога.

Настройка базы знаний
Установка завершена, и вы попадете в интерфейс AnythingLLM, где вам нужно выбрать большую модель по умолчанию.
локальная конфигурация
Если вы используете локальное развертывание DeepSeek, прокрутите страницу вниз, чтобы найтиOllama
Просто выберите.

Конфигурация API
Если вы используете API стороннего производителя, этот шаг выбирать не нужно.ollama
Найдите его здесь.Generic OpenAI
Generic OpenAI:
Подключение к любому сервису, совместимому с форматом интерфейса OpenAI, с помощью пользовательской конфигурации.

Здесь необходимо заполнить 5 параметров

Используйте API потока на основе силикона:
BaseURL
адрес запроса
https://api.siliconflow.cn/v1
APIkey
Секретный ключ API, введите тот, который вы только что получили.
ChatModelName
Название модели
Pro/deepseek-ai/DeepSeek-R1
Token context window
(контекстное окно)
4096
Max Tokens
(Максимальное количество жетонов)
4096 или 8192 в зависимости от ситуации.
Используйте API вулканического ковчега:
BaseURL
адрес запроса
https://ark.cn-beijing.volces.com/api/v3
APIkey
Секретный ключ API, введите тот, который вы только что получили.
ChatModelName
Название модели
Здесь есть особенность, имя модели Volcano Ark нужно заполнить идентификатором точки доступа. нам нужно перейти на платформу для создания точки доступа.
Сначала включите DeepSeekR1!

Приходите в онлайн-рассуждения - создавайте точки доступа

Подтвердите доступ

Этот идентификатор является идентификатором точки доступа, просто заполните это значение.

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-й степени: перелом более четырех ребер или более двух ребер с парадоксальным движением;
Легкие травмы первой степени: переломы первого-третьего ребер.
В случае перелома двух ребер, если он не сопровождается парадоксальной активностью или другими серьезными состояниями (например, более четырех), он классифицируется как легкая травма первой степени. Таким образом, перелом двух ребер имеет следующую градацию:
легкие травмы (первая степень)
Однако в выложенном документе два сломанных ребра классифицируются как легкая травма второй степени. Это довольно серьезная ошибка для применения в юридической консультации.

Не стоит торопиться, когда речь идет о подобной неспособности отвечать на вопросы, давайте устраним причину.
Я внимательно изучил загруженный PDF-файл и обнаружил, что в нем много таблиц, специального форматирования и куча неиспользуемого содержимого. Эти "примеси" влияют на способность ИИ понять то, что мы действительно хотим, чтобы он узнал.

Из-за всего этого беспорядочного форматирования ИИ может потерять ключевые моменты, как в случае с беспорядочной книгой, поэтому я реорганизовал ключевое содержание в лаконичный документ Word, удалил ненужное, а затем снова подал его в ИИ.
Выдержка из содержания сверстанного документа:
5.6.4轻伤二级
b)肋骨骨折2处以上。
c) 胸骨骨折;锁骨骨折;肩胛骨骨折。
d)胸锁关节脱位;肩锁关节脱位。
e) 胸部损伤,致皮下气肿1周不能自行吸收。
f) 胸腔积血;胸腔积气。
g)胸壁穿透创。
h)胸部挤压出现窒息征象。
5.6.5轻微伤
a)肋骨骨折;肋软骨骨折。
5.7 腹部损伤
5.7. 1重伤一级
a)肝功能损害(重度)。
b)胃肠道损伤致消化吸收功能严重障碍,依赖肠外营养。
c) 肾功能不全(尿毒症期)。
Попробуйте задать вопрос еще раз, и на этот раз ответ был гораздо более точным!

Это лишь самое простое решение. Если вы хотите, чтобы ИИ отвечал более точно, можно попробовать изменить формат документа, оптимизировать метод поиска, настроить параметры ИИ и так далее. Но об этих дополнительных возможностях мы поговорим позже.
Доступ к WeChat BOT
Получите секретный ключ AnythingLLM
показать (билет)AnythingLLM
интерфейс, перейдите в раздел Настройки - Секретный ключ API - Сгенерировать новый секретный ключ API

Использование пакета интеграции
Я поставилAnythingLLM
интерфейс кNGCBOT
и превращается в интегрированный пакет.
Распакуйте веб-ссылку вNGCBOT_LLM.zip
Застегните молнию, дважды щелкните启动器.exe
Готов к работе.
Прежде чем использовать его, необходимо сделать три вещи!
Прежде чем использовать его, необходимо сделать три вещи!
Прежде чем использовать его, необходимо сделать три вещи!
Во-первых, убедитесь, что в каталоге вашего интеграционного пакета нет китайского языка, если он есть, то будет выдана ошибка!
правильная демонстрация
F:AIAIpackageNGCBot
ложная демонстрация
F:微信BOTAIpackageNGCBot
Во-вторых, установите указанную версию WeChat.
В веб-ссылке есть версия для микрософта.
WeChatSetup-3.9.10.27.exe
Устанавливать эту версию, на компьютере изначально установленную microsoft, не нужно, прямо заменяя установку.
В-третьих, измените файл конфигурации NGCBOT.
требуют глубокого пониманияConfigConfig.yaml
Конфигурационный файл может быть изменен.
В конфигурационный файл внесено три изменения
1. Измените конфигурацию суперадминистратора.
Здесь впишите ID микросигнала, который вы установили, не забывайте всегда его менять! В противном случае все это будет отправлено мне .....
Как получить этот идентификатор? Используйте микросигнал, который вы хотите настроить от имени администратора, отправьте сообщение боту, и тогда в консоли вы увидите идентификатор человека, отправившего сообщение.

2. Измените конфигурацию приоритета ai.
Здесь указан порядок выполнения интерфейсов ai, меньшее число впереди означает приоритет. По умолчанию установлен приоритет AnythingLLM.

3.Конфигурация AnythingLLM.
Здесь вам нужно изменитьworkspace
, иAnythingLLMkey
Эти два значения как раз подходят.
workspace
Введите имя рабочей области, которую вы создали AnythingLLM, в нижнем регистре.
AnythingLLMkey
Введите секретный ключ, который вы получите в AnythingLLM. Не секретный ключ из Silicon Flow или из Volcano Ark!
Не забудьте оставить носильщика впереди.

После выполнения описанных выше действий по внесению изменений дважды щелкните на启动器.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'] }
Приобретение интеграционного пакета
Tootsie Labs - Windowns Edition
Кварк:
https://pan.quark.cn/s/8d1293227cf9
Baidu.
https://pan.baidu.com/s/1wx8LmbY2XBaJAAJvmGK06g?pwd=8d5m
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...