Implantación de una base de conocimientos local/API basada en DeepSeek-R1 y acceso al BOT de WeChat.
Tutoriales prácticos sobre IAPublicado hace 6 meses Círculo de intercambio de inteligencia artificial 2.6K 00
En el artículo anterior, "ElDespliegue local DeepSeek-R1 y tutoriales de acceso a WeChat BotHoy me gustaría compartir con vosotros una forma más interesante de jugar: cómo alimentar a nuestro asistente de IA con algunas cosas secas, ¡para que se convierta en un consultor profesional que realmente sabe lo que hace!
A continuación, te llevaré de la mano para completar todo el proceso de construcción de la base de conocimientos, incluyendo la configuración del entorno, el despliegue de la base de conocimientos, la carga de información, así como algunos detalles de los consejos de puesta a punto. ¡Por último, vamos a poner este "lleno de conocimiento" AI en el robot WeChat, para crear un verdadero entenderte, entender el asistente inteligente de la industria!

En primer lugar, veamos el resultado, este es el resultado después de haber cargado una consulta de información "Clasificación de discapacidad por lesión humana":

Despliegue de DeepSeek-R1
DeepSeek Hay dos formas de despliegue, una es el despliegue local y la otra es acceder a APIs de terceros.
Pros y contras de ambos:
- despliegue local
✅ Ventajas: datos totalmente privados, bajos costes a largo plazo, capacidad de respuesta
❌ Desventajas: se come la aritmética local, requiere máquinas mejor configuradas. - Llamada API
✅ Ventajas: acceso rápido, sin mantenimiento, escalabilidad resistente.
❌ Inconvenientes: los datos deben transmitirse a terceros, los costes a largo plazo no son controlables.
DeepSeek local
Primero tienes que asegurarte de que has instalado ollama y ollama funciona correctamente.
DeepSeekAPI
En realidad iba a escribir este post sólo sobre el enfoque de despliegue local .....
Sin embargo, como la versión web de DeepSeek ha estado "en huelga" últimamente, me vi obligado a probar la versión local. ChatBox No esperaba experimentar una versión completa de R1, ¡y fue una pasada! Creo que esta solución también huele bien, así que voy a escribir en la forma de API por cierto.
Aquí te facilito dos plataformas para que accedas a la que prefieras.
En primer lugar, debemos obtener la APIkey y, a continuación, rellenar la configuración de la base de conocimientos con la APIkey.
arca volcánica
sitio web oficial
https://console.volcengine.com/ark
precios
Entrada: ¥2/M Fichas
Salida: ¥8/M Fichas
entradaAPIKey管理
CreeAPIkey

Nueva clave secreta, copia APIkey

Flujo basado en silicio
Flujo basado en silicio sitio web oficial
https://cloud.siliconflow.cn/account/ak
precios
Entrada: ¥4/M Fichas
Salida: ¥16/M Fichas
Vaya a la parte izquierda de laAPI秘钥
Haga clic en新建秘钥
clave secreta posterior a la copia

repositorio
Instalación de la base de conocimientos
A continuación tenemos que acceder a la base de conocimientos, aquí utilizamosAnythingLLM
El proyecto.
AnythingLLM es un marco de aplicación Large Language Model (LLM) de código abierto diseñado para ayudar a los usuarios a crear y desplegar fácilmente aplicaciones inteligentes de preguntas y respuestas, análisis de documentos y otras basadas en datos privados.
Vaya al sitio web de AnythingLLM y descargue el instalador.
https://anythingllm.com/

Ejecute el instalador, entretanto descargará las dependencias adicionales necesarias (GPU, soporte NPG)

Si la descarga falla, o si cierra la ventana de descarga y omite este paso, AnythingLLM se instalará correctamente.
No te preocupes en este momento, puedes hacer la instalación manualmente.
El enlace web tiene unlib
Código postal.
Extraiga el archivo zip y coloque la carpeta extraída en la carpeta你的安装目录AnythingLLMresourcesollama
Dentro del catálogo.

Configuración de la base de conocimientos
La instalación ha finalizado y entrará en la interfaz de AnythingLLM, donde deberá seleccionar un modelo grande por defecto.
configuración local
Si está utilizando una implementación local de DeepSeek, desplácese hacia abajo para encontrar la opciónOllama
Sólo tienes que elegir.

Configuración API
Si utiliza una API de terceros, no es necesario seleccionar este paso.ollama
Encuéntralo aquí abajo.Generic OpenAI
OpenAI genérico:
Conéctate a cualquier servicio compatible con el formato de interfaz OpenAI mediante una configuración personalizada.

Aquí hay que rellenar 5 parámetros

Utiliza la API de flujo basada en silicona:
BaseURL
solicitar dirección
https://api.siliconflow.cn/v1
APIkey
Clave secreta API, introduzca la que acaba de obtener.
ChatModelName
Nombre del modelo
Pro/deepseek-ai/DeepSeek-R1
Token context window
(ventana contextual)
4096
Max Tokens
(Número máximo de fichas)
4096 u 8192, dependiendo de tu situación.
Utilice la API del Arca Volcánica:
BaseURL
solicitar dirección
https://ark.cn-beijing.volces.com/api/v3
APIkey
Clave secreta API, introduzca la que acaba de obtener.
ChatModelName
Nombre del modelo
Aquí es especial, Volcano Ark nombre del modelo debe ser llenado con el punto de acceso ID. tenemos que ir a la plataforma para crear el punto de acceso.
En primer lugar, active DeepSeekR1.

Llegar al razonamiento en línea - Crear puntos de acceso

Confirmar acceso

Este ID es el ID del punto de acceso, sólo tienes que rellenar este valor.

Token context window
(ventana contextual)
4096
Max Tokens
(Número máximo de fichas)
4096 u 8192, dependiendo de tu situación.
Una vez completados los ajustes anteriores, no olvides pulsarSaveChanage
Ahorra.

Creación de espacios de trabajo
El siguiente paso en esta interfaz de privacidad, es decirle cómo guardar los datos, cómo utilizar esas instrucciones, de todos modos, son todos los conjuntos de palabras, directamente saltar el siguiente paso puede ser

Este paso es la pantalla de bienvenida, nada especial, ¡sólo sáltatela!

Cree un nombre para el espacio de trabajo. Se recomienda utilizar el inglés, ya que resultará útil si desea utilizar la API para llamarlo más adelante.

Ahora introduzca AnythingLLM
La interfaz principal del juego ya está en marcha. Te enseñará a jugar con un diálogo de muestra

Haz clic en el espacio de trabajo que acabamos de nombrar a la izquierda para entrar en una nueva pantalla de diálogo.

He aquí un diálogo sencillo para comprobar si la llamada al modelo se ha realizado correctamente.

Configuración del espacio de trabajo
Haga clic en el botón Configuración situado a la derecha del área de trabajo para acceder a la interfaz de configuración.

Ir a la configuración del chat donde podemos ajustar los detalles del modelo

Aquí es donde se ajusta el modelo grande actualmente en uso. Por defecto se utiliza el establecido por el sistema, que se fijó anteriormenteollama

También están disponibles otros grandes modelos locales o servicios API.

El modo se divide en chat y consulta, consulta significa sólo el uso de la función de contexto de consulta (es necesario tener sus propios documentos cargados), chat significa el uso de la función de chat + consulta

Número de contextos

Puede interpretarse como una palabra clave de persona, que puede modificarse a chino o dejarse por defecto.

Información alimentaria
A continuación, debe alimentar la base de conocimientos, haga clic en el espacio de trabajo junto a上传按钮

Acceso a la interfaz de gestión de la base de conocimientos

Admite la carga por lotes, admite Excel, world, txt y otros formatos de archivo. Aquí he subido un《人体损伤致残程度分级》.pdf
.

Seleccione el archivo y haga clic enMove to WorkSpace
Este paso añade archivos del área temporal al espacio de trabajo.

Usted puede ver los archivos cargados transferidos a la derecha, aquí haga clic en elSace and Embed
Haz una parada.

ConsejosWorkSpace updated successfully
Indica que se ha guardado correctamente.

Aquí debe hacer clic enPin to workspace
Este botón.
Anclar al espacio de trabajo::
Si, al utilizar AnythingLLM, observa que no obtiene respuestas satisfactorias por defecto, puede mejorar la calidad de sus respuestas fijando documentos. Esta es una forma rápida de mejorar la precisión y relevancia de sus respuestas.
En pocas palabras, la fijación de documentos es el proceso de "alimentar" el contenido de un documento directamente al modelo lingüístico para que pueda referirse a ese contenido al responder a una pregunta y ofrecer una respuesta mejor.

A continuación, volvemos a la página Conversaciones, creamos una nueva conversación, formulamos una pregunta y comprobamos que la base de conocimientos se ha añadido correctamente.


resolución de errores
Puede ver que DeepSeek ha respondido a la pregunta junto con la información cargada, pero hay errores en la respuesta.
Por ejemplo, la primera pregunta:
Pregunta:
¿Cuál es el grado por dos costillas rotas?
Contesta:
Sobre la base de la información contextual facilitada, las normas de clasificación de la discapacidad por lesión humana para las fracturas costales son las siguientes:
Lesión grave de grado 2: Fractura de más de cuatro costillas o de más de dos costillas con movimiento paradójico;
Lesiones leves de primer grado: fracturas de la primera a la tercera costilla.
En caso de fractura de dos costillas, si no va acompañada de actividad paradójica u otras afecciones graves (por ejemplo, más de cuatro), se clasifica como lesión leve de primer grado. Así pues, se clasifica la fractura de dos costillas:
lesiones leves (primer grado)
Sin embargo, en el documento subido, dos costillas rotas se clasifican como lesiones leves de segundo grado. Se trata de un error bastante grave para una solicitud de asesoramiento jurídico.

No hay necesidad de precipitarse cuando se trata de este tipo de incapacidad para responder a las preguntas, vamos a solucionar la causa.
Analicé detenidamente el archivo PDF cargado y descubrí que contenía muchas tablas, formatos especiales y un montón de contenido no utilizado. Estas "impurezas" afectan a la capacidad de la IA para entender lo que realmente queremos que aprenda.

Todo este desorden de formatos puede hacer que la IA pierda de vista los puntos clave, como cuando vemos un libro desordenado, así que reorganicé el contenido clave en un documento conciso de Word, borré el contenido inservible y se lo volví a pasar a la IA.
Un extracto del contenido del documento cotejado:
5.6.4轻伤二级
b)肋骨骨折2处以上。
c) 胸骨骨折;锁骨骨折;肩胛骨骨折。
d)胸锁关节脱位;肩锁关节脱位。
e) 胸部损伤,致皮下气肿1周不能自行吸收。
f) 胸腔积血;胸腔积气。
g)胸壁穿透创。
h)胸部挤压出现窒息征象。
5.6.5轻微伤
a)肋骨骨折;肋软骨骨折。
5.7 腹部损伤
5.7. 1重伤一级
a)肝功能损害(重度)。
b)胃肠道损伤致消化吸收功能严重障碍,依赖肠外营养。
c) 肾功能不全(尿毒症期)。
Volví a hacer la pregunta y esta vez la respuesta fue mucho más precisa.

Ésta es sólo la solución más sencilla. Si quieres que la IA responda con más precisión, también puedes probar a ajustar el formato del documento, optimizar el método de búsqueda, ajustar los parámetros de la IA, etc. Pero hablaremos de estas jugadas avanzadas más adelante.
Acceso a WeChat BOT
Obtener la clave secreta de AnythingLLM
espectáculo (una entrada)AnythingLLM
vaya a Configuración - Clave secreta de API - Generar nueva clave secreta de API

Uso del paquete de integración
He puestoAnythingLLM
paraNGCBOT
en un paquete integrado.
Descomprima el enlace web en elNGCBOT_LLM.zip
Zip, doble clic启动器.exe
Listo para correr.
Hay tres cosas que debes hacer antes de utilizarlo.
Hay tres cosas que debes hacer antes de utilizarlo.
Hay tres cosas que debes hacer antes de utilizarlo.
En primer lugar, asegúrese de que no hay chino en el directorio de su paquete de integración, ¡habrá un error si hay chino!
demostración correcta
F:AIAIpackageNGCBot
falsa demostración
F:微信BOTAIpackageNGCBot
En segundo lugar, instala la versión especificada de WeChat.
Hay una versión para Microsoft en el enlace web
WeChatSetup-3.9.10.27.exe
Instalar esta versión, el equipo originalmente tenía microsoft no es necesario eliminar, anular directamente la instalación.
En tercer lugar, modifique el archivo de configuración de NGCBOT.
requieren un profundo conocimiento deConfigConfig.yaml
El archivo de configuración puede modificarse.
Hay tres cambios en el archivo de configuración
1. Modificar la configuración del superadministrador.
Aquí rellena el ID de la micro-señal que has configurado, ¡recuerda cambiarlo siempre! De lo contrario, todo se envía a mí ....
¿Cómo obtengo este ID? Usa la microseñal que quieras configurar como administrador, envía un mensaje al bot, y entonces verás el id de la persona que envió el mensaje en la consola.

2. Modificar la configuración de la prioridad ai.
Este es el orden en el que se ejecutan las interfaces ai, un número más pequeño delante significa prioridad. La configuración por defecto es AnythingLLM priority.

3.Configuración de AnythingLLM.
Aquí tiene que cambiar elworkspace
yAnythingLLMkey
Estos dos valores están bien.
workspace
Rellene el nombre del espacio de trabajo que creó AnythingLLM, es el que está en minúsculas.
AnythingLLMkey
Introduce la clave secreta que obtienes en AnythingLLM. No la clave secreta de Silicon Flow ni la de Volcano Ark.
Recuerda dejar al Portador al frente.

Después de seguir los pasos anteriores para realizar cambios, haga doble clic en el icono启动器.exe
Así podrás divertirte.
El acceso al paquete de integración se encuentra al final del artículo.
¡Felicidades! Cualquiera que vea esto es 👍🏻👍🏻
Si quieres empezar a jugar rápidamente con los robots de la base de conocimientos, consulta aquí.
Esto es lo que hay escrito para los más pequeños que quieran profundizar en ello
- Cómo llamar a la interfaz AnythingLLM
- Cómo ampliar la funcionalidad de NGCBOT
Siga leyendo si le interesa
desarrollo y expansión
llamada de interfaz
Este paso es adecuado para aquellos que quieren ampliar su investigación de desarrollo, si usted es un principiante y desea reproducir el paquete de integración directamente, por favor omita este paso.
Bien, avancemos un poco más. Entradas del navegador[http://localhost:3001/api/docs/](http://localhost:3001/api/docs/)
Vaya a la página de la API.
Aquí, como no se puede acceder a la documentación oficial original de la API en la web, se ha cambiado al acceso local a la documentación de la API.
Después de entrar en la página de descripción de la API, se puede ver que hay varias interfaces aquí. Y soporta la depuración directamente en esta página.
Antes de empezar a acceder, tenemos que autorizar la clave secreta, haga clic en el botónAuthorize
.

Pegue la clave AnythingLLMAPI en la pantalla abierta, ¡la autorización se ha realizado correctamente!

Entonces baja y encuentra/v1/workspace/{slug}/chat
Esta API

Descripción de los parámetros
parámetros | instrucciones | nota |
---|---|---|
babosa | espacio de trabajo | Rechazar caracteres chinos, mayúsculas y otros caracteres especiales, sólo minúsculas |
mensaje | Mensaje | El mensaje que desea enviar |
modo | paradigma | El esquema se divide en chat y consulta, consulta significa sólo el uso de la función de contexto de consulta (es necesario tener sus propios documentos cargados), chat significa el uso de la función de chat |
Ejemplo de solicitud (cuerpo de la solicitud)
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"
}'
Respuestas
{
"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
}
}
De esta manera hemos completado la prueba de llamar a la interfaz AnythingLLM. De acuerdo con esta interfaz puedes implementar tu propia lógica de negocio, a continuación combinamos el BOT de WeChat para implementar el robot de la base de conocimientos.
Modificaciones de NGC
Los proyectos NGCBOT deben estar enApiServerAiServerAiDialogue.py
Añadir una llamada al scriptAnythingLLM
La lógica de la
Aquí pondré el código.
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}'}]
Añada elanythingLLMConfig
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'] }
Adquisición de paquetes de integración
Laboratorios Tootsie - Edición Windowns
Quark:
https://pan.quark.cn/s/8d1293227cf9
Baidu.
https://pan.baidu.com/s/1wx8LmbY2XBaJAAJvmGK06g?pwd=8d5m
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...