No artigo anterior, "OTutoriais de implantação local do DeepSeek-R1 e de acesso ao WeChat BotEm "DeepSeek-R1", implantamos o DeepSeek-R1 localmente e acessamos um bot do WeChat para conversar conosco, mas hoje eu gostaria de compartilhar com você uma maneira mais interessante de brincar com ele: como alimentar nosso assistente de IA com algumas coisas secas, para que ele possa se transformar em um consultor profissional que realmente sabe o que está fazendo!
Em seguida, vou orientá-lo a concluir todo o processo de criação da base de conhecimento, incluindo a configuração do ambiente, a implantação da base de conhecimento, o upload de informações, bem como alguns detalhes das dicas de ajuste. Por fim, colocaremos essa IA "cheia de conhecimento" no robô do WeChat para criar um assistente inteligente que realmente entenda você e o setor!
Em primeiro lugar, vamos dar uma olhada no resultado, que é o resultado depois que eu carreguei uma consulta de informações sobre "Classificação de incapacidade por lesão humana":
Implementação do DeepSeek-R1
DeepSeek Há duas maneiras de implementar, seja localmente ou acessando uma API de terceiros.
Prós e contras de ambos:
- implantação local
Vantagens: dados totalmente privados, baixos custos a longo prazo, capacidade de resposta
Desvantagens: consome aritmética local, requer máquinas mais bem configuradas - Chamada de API
Vantagens: acesso rápido, livre de manutenção, escalabilidade resiliente
Desvantagens: os dados precisam ser repassados a terceiros, os custos de longo prazo são incontroláveis
DeepSeek local
Primeiro, você precisa ter certeza de que instalou o ollama e o ollama está funcionando corretamente.
DeepSeekAPI
Na verdade, eu ia escrever esta postagem apenas sobre a abordagem de implementação local .....
No entanto, como a versão web do DeepSeek tem estado "em greve" ultimamente, fui forçado a experimentar a versão local. ChatBox Eu não esperava experimentar uma versão completa do R1, e foi muito divertido! Acho que essa solução também tem um cheiro bom, então, a propósito, escreverei na forma de API.
Aqui, estou fornecendo duas plataformas para você acessar de acordo com sua escolha.
Primeiro, precisamos obter a APIkey e, em seguida, preencher a configuração da base de conhecimento com a APIkey.
Arca vulcânica
site oficial
https://console.volcengine.com/ark
preços
Entrada: ¥2/M Tokens
Saída: ¥8/M Tokens
entradaAPIKey管理
CriarAPIkey
Nova chave secreta, copiar APIkey
Fluxo baseado em silício
Fluxo baseado em silício site oficial
https://cloud.siliconflow.cn/account/ak
preços
Entrada: ¥4/M Tokens
Saída: ¥16/M Tokens
Vá para o lado esquerdo da telaAPI秘钥
Clique em新建秘钥
chave secreta de pós-cópia
repositório
Instalação da base de conhecimento
Em seguida, precisamos acessar a base de conhecimento, e aqui usamosAnythingLLM
O projeto.
O AnythingLLM é uma estrutura de aplicativos de código aberto do Large Language Model (LLM) projetada para ajudar os usuários a criar e implantar facilmente perguntas e respostas inteligentes, análise de documentos e outros aplicativos baseados em dados privados.
Acesse o site do AnythingLLM e faça o download do instalador.
https://anythingllm.com/
Execute o instalador e, em seguida, ele fará o download das dependências adicionais necessárias (GPU, suporte a NPG)
Se o download falhar, ou se você fechar a janela de download e pular esta etapa, o AnythingLLM ainda assim será instalado com êxito.
Não se preocupe neste ponto, você pode fazer a instalação manualmente.
O link da web tem umlib
Zip.
Extraia o arquivo zip e coloque a pasta extraída no diretório你的安装目录AnythingLLMresourcesollama
Dentro do catálogo.
Configuração da base de conhecimento
Após a conclusão da instalação, entre na interface do AnythingLLM, onde você precisa selecionar um modelo grande padrão.
configuração local
Se você estiver usando uma implementação local do DeepSeek, role para baixo para encontrar oOllama
Basta escolher.
Configuração da API
Se você estiver usando uma API de terceiros, esta etapa não precisa ser selecionadaollama
Encontre-o aqui.Generic OpenAI
Generic OpenAI:
Conecte-se a qualquer serviço compatível com o formato de interface OpenAI por meio de uma configuração personalizada.
Há 5 parâmetros a serem preenchidos aqui
Use a API de fluxo baseada em silicone:
BaseURL
endereço de solicitação
https://api.siliconflow.cn/v1
APIkey
Chave secreta da API, preencha a que você acabou de receber.
ChatModelName
Nome do modelo
Pro/deepseek-ai/DeepSeek-R1
Token context window
(janela de contexto)
4096
Max Tokens
(Número máximo de tokens)
4096 ou 8192, dependendo de sua situação.
Use a API Volcano Ark:
BaseURL
endereço de solicitação
https://ark.cn-beijing.volces.com/api/v3
APIkey
Chave secreta da API, preencha a que você acabou de receber.
ChatModelName
Nome do modelo
O nome do modelo do Volcano Ark precisa ser preenchido com o ID do ponto de acesso. Precisamos ir à plataforma para criar o ponto de acesso.
Comece ativando o DeepSeekR1 primeiro!
Come to Online Reasoning - Criando pontos de acesso
Confirmar o acesso
Essa ID é a ID do ponto de acesso, basta preencher esse valor.
Token context window
(janela de contexto)
4096
Max Tokens
(Número máximo de tokens)
4096 ou 8192, dependendo de sua situação.
Quando as configurações acima estiverem concluídas, não se esqueça de tocar emSaveChanage
Salvar.
Criação de espaço de trabalho
A próxima etapa dessa interface de privacidade é informar como salvar os dados e como usar essas instruções, de qualquer forma, são todos conjuntos de palavras que podem ser ignorados diretamente na próxima etapa
Esta etapa é a tela de boas-vindas, nada de especial, simplesmente pule-a!
Crie um nome para o espaço de trabalho. É recomendável que você use inglês, pois isso será útil se você quiser usar a API para chamá-lo mais tarde.
Agora, digite AnythingLLM
A interface principal do jogo já está pronta. Ela ensinará você a jogar com um exemplo de diálogo
Clique no espaço de trabalho que acabamos de nomear à esquerda para entrar em uma nova tela de diálogo.
Aqui está um diálogo simples para testar se a chamada do modelo foi bem-sucedida.
Configuração do espaço de trabalho
Clique no botão Setup (Configuração) no lado direito do espaço de trabalho para acessar a interface Setup (Configuração).
Vá para as configurações do bate-papo, onde podemos ajustar os detalhes do modelo
Aqui é onde você ajusta o modelo grande atualmente em uso. O padrão é usar o modelo definido pelo sistema, que foi definido anteriormenteollama
Outros modelos locais grandes ou serviços de API também estão disponíveis.
O modo é dividido em chat e consulta, consulta significa usar apenas a função de contexto de consulta (você precisa ter seus próprios documentos carregados), chat significa usar a função de chat + consulta
Número de contextos
Você pode interpretá-la como uma palavra-chave pessoal, que pode ser modificada para chinês ou deixada como padrão.
Informações sobre alimentação
Em seguida, você precisa alimentar a base de conhecimento, clicar no espaço de trabalho ao lado de上传按钮
Acesso à interface de gerenciamento da base de conhecimento
Oferece suporte a upload em lote, Excel, world, txt e outros formatos de arquivo. Aqui eu fiz o upload de um arquivo《人体损伤致残程度分级》.pdf
.
Selecione o arquivo e clique emMove to WorkSpace
Esta etapa adiciona arquivos da área temporária ao espaço de trabalho.
Você pode ver os arquivos carregados transferidos à direita, aqui clique no botãoSace and Embed
Faça uma defesa.
Dicas abaixoWorkSpace updated successfully
Indica um salvamento bem-sucedido.
Aqui você precisa clicar emPin to workspace
Este botão.
Fixar no espaço de trabalho::
Se, ao usar o AnythingLLM, você perceber que não está obtendo respostas satisfatórias por padrão, poderá melhorar a qualidade das respostas fixando documentos. Essa é uma maneira rápida de aumentar a precisão e a relevância de suas respostas.
Em termos simples, a fixação de documentos é o processo de "alimentar" o conteúdo de um documento diretamente no modelo de linguagem para que ele possa consultar esse conteúdo ao responder a uma pergunta e fornecer uma resposta melhor.
Em seguida, voltamos à página Conversations (Conversas), criamos uma nova conversa, fazemos uma pergunta e verificamos se a base de conhecimento foi adicionada com êxito.
resolução de erros
Você pode ver que o DeepSeek respondeu à pergunta em conjunto com as informações carregadas, mas há erros na resposta.
Por exemplo, a primeira pergunta:
Pergunte:
Qual é a classificação para duas costelas quebradas?
Resposta:
Com base nas informações contextuais fornecidas, os Padrões de Classificação de Incapacidade por Lesão Humana para fraturas de costela são os seguintes:
Lesão grave de grau 2: fratura de mais de quatro costelas ou mais de duas costelas com movimento paradoxal;
Lesões leves de primeiro grau: fraturas da primeira à terceira costela.
No caso de uma fratura de duas costelas, se não for acompanhada de atividade paradoxal ou outras condições graves (por exemplo, mais de quatro), ela é classificada como uma lesão leve de primeiro grau. Assim, duas costelas fraturadas são classificadas:
ferimentos leves (primeiro grau)
Entretanto, no arquivo carregado, duas costelas quebradas são classificadas como uma lesão menor de segundo grau. Esse é um erro bastante grave para um aplicativo de consultoria jurídica.
Não há necessidade de pressa quando se trata desse tipo de incapacidade de responder a perguntas, vamos solucionar a causa.
Dei uma olhada mais de perto no arquivo PDF carregado e descobri que ele continha muitas tabelas, formatação especial e uma grande quantidade de conteúdo não utilizado. Essas "impurezas" afetam a capacidade da IA de entender o que realmente queremos que ela aprenda.
Toda essa formatação bagunçada pode fazer com que a IA perca a noção dos pontos principais, como quando vemos um livro bagunçado. Por isso, reorganizei o conteúdo principal em um documento conciso do Word, excluí o conteúdo inutilizável e o alimentei novamente na IA.
Um trecho do conteúdo do documento agrupado:
5.6.4轻伤二级
b)肋骨骨折2处以上。
c) 胸骨骨折;锁骨骨折;肩胛骨骨折。
d)胸锁关节脱位;肩锁关节脱位。
e) 胸部损伤,致皮下气肿1周不能自行吸收。
f) 胸腔积血;胸腔积气。
g)胸壁穿透创。
h)胸部挤压出现窒息征象。
5.6.5轻微伤
a)肋骨骨折;肋软骨骨折。
5.7 腹部损伤
5.7. 1重伤一级
a)肝功能损害(重度)。
b)胃肠道损伤致消化吸收功能严重障碍,依赖肠外营养。
c) 肾功能不全(尿毒症期)。
Tentei fazer a pergunta novamente e, dessa vez, a resposta foi muito mais precisa!
Essa é apenas a solução mais simples. Se quiser que a IA responda com mais precisão, você também pode tentar ajustar o formato do documento, otimizar o método de pesquisa, ajustar os parâmetros da IA e assim por diante. Mas falaremos sobre essas jogadas avançadas mais tarde.
Acesso ao WeChat BOT
Obter a chave secreta do AnythingLLM
show (um ingresso)AnythingLLM
interface, vá para Configurações - Chave secreta da API - Gerar nova chave secreta da API
Usando o pacote de integração
Eu coloqueiAnythingLLM
interface paraNGCBOT
e transformados em um pacote integrado.
Descompacte o link da Web na seçãoNGCBOT_LLM.zip
Zip, clique duas vezes启动器.exe
Pronto para funcionar.
Há três coisas que você precisa fazer antes de usá-lo!
Há três coisas que você precisa fazer antes de usá-lo!
Há três coisas que você precisa fazer antes de usá-lo!
Primeiro, certifique-se de que não haja chinês no diretório de seu pacote de integração; haverá um erro se houver chinês!
demonstração correta
F:AIAIpackageNGCBot
falsa demonstração
F:微信BOTAIpackageNGCBot
Em segundo lugar, instale a versão especificada do WeChat.
Há uma versão da Microsoft no link da Web
WeChatSetup-3.9.10.27.exe
Ao instalar essa versão, o computador que originalmente tinha a Microsoft não precisa excluir, substituindo diretamente a instalação.
Em terceiro lugar, modifique o arquivo de configuração do NGCBOT.
exigem uma compreensão completa deConfigConfig.yaml
O arquivo de configuração pode ser modificado.
Há três alterações no arquivo de configuração
1. modifique a configuração do superadministrador.
Aqui, preencha o ID do micro-sinal que você configurou, lembre-se de sempre alterá-lo! Caso contrário, tudo será enviado para mim ....
Como faço para obter essa ID? Use o microsinal que deseja configurar como administrador, envie uma mensagem para o bot e, em seguida, verá o ID da pessoa que enviou a mensagem no console.
2) Modifique a configuração de prioridade da IA.
Esta é a ordem em que as interfaces ai são executadas; um número menor na frente significa prioridade. A configuração padrão é a prioridade AnythingLLM.
3.AnythingLLM configuration.
Aqui você precisa alterar oworkspace
eAnythingLLMkey
Esses dois valores estão corretos.
workspace
Preencha o nome do espaço de trabalho que você criou com o AnythingLLM, em letras minúsculas.
AnythingLLMkey
Preencha a chave secreta que você recebe no AnythingLLM. Não a chave secreta do Silicon Flow ou a do Volcano Ark!
Lembre-se de deixar o portador na frente.
Depois de seguir as etapas acima para fazer alterações, clique duas vezes no ícone启动器.exe
Então você pode se divertir!
A aquisição do pacote de integração está no final do artigo.
Parabéns! Qualquer pessoa que veja isso é 👍🏻👍🏻
Se você quiser apenas começar a brincar rapidamente com os bots da base de conhecimento, veja aqui.
Aqui está o que está escrito para os pequenos que querem se aprofundar no assunto
- Como chamar a interface AnythingLLM
- Como ampliar a funcionalidade do NGCBOT
Continue lendo se você estiver interessado
desenvolvimento e expansão
chamada de interface
Esta etapa é adequada para aqueles que desejam expandir sua pesquisa de desenvolvimento. Se você for um iniciante e quiser reproduzir o pacote de integração diretamente, pule esta etapa.
OK, vamos avançar um pouco mais. Entradas do navegador[http://localhost:3001/api/docs/](http://localhost:3001/api/docs/)
Vá para a página da API.
Aqui, como a documentação oficial original da API não pode ser acessada na Web, ela foi alterada para acesso local à documentação da API.
Depois de entrar na página de descrição da API, você pode ver que há várias interfaces aqui. E ela suporta a depuração diretamente nessa página.
Antes de começarmos a acessar, precisamos autorizar a chave secreta, clique no botãoAuthorize
.
Cole a chave AnythingLLMAPI na tela aberta; a autorização foi bem-sucedida!
Em seguida, desça e encontre/v1/workspace/{slug}/chat
Essa API
Descrição do parâmetro
parâmetros | instruções | nota |
---|---|---|
lesma | espaço de trabalho | Rejeitar caracteres chineses, letras maiúsculas e outros caracteres especiais, apenas letras minúsculas |
mensagem | Mensagem | A mensagem que você deseja enviar |
modo | paradigma | O esquema é dividido em chat e consulta; consulta significa usar apenas a função de contexto de consulta (você precisa ter seus próprios documentos carregados); chat significa usar a função de chat |
Exemplo de uma solicitação (corpo da solicitação)
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"
}'
Respostas
{
"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
}
}
Dessa forma, concluímos o teste de chamada da interface AnythingLLM. De acordo com essa interface, você pode implementar sua própria lógica de negócios. Abaixo, combinamos o WeChat BOT para implementar o robô da base de conhecimento.
Modificações do NGC
Os projetos NGCBOT precisam estar emApiServerAiServerAiDialogue.py
Adição de uma chamada ao scriptAnythingLLM
A lógica do
Aqui, colocarei apenas o 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}'}]
Adicione oanythingLLMConfig
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'] }
Aquisição de pacotes de integração
Tootsie Labs - Edição Windowns
Quark:
https://pan.quark.cn/s/8d1293227cf9
Baidu.
https://pan.baidu.com/s/1wx8LmbY2XBaJAAJvmGK06g?pwd=8d5m