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
entradaGerenciamento de chaves de API
CriarChave de API
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 telaChave da API
Clique emNova chave secreta
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 usamosQualquer coisaLLM
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órioSeu diretório de instalação 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.Genéricos 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
Chave de API
Chave secreta da API, preencha a que você acabou de receber.
ChatModelName
Nome do modelo
Pro/deepseek-ai/DeepSeek-R1
Token janela de contexto
(janela de contexto)
4096
Tokens máximos
(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
Chave de API
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.
Janela de contexto de token
(janela de contexto)
4096
Tokens máximos
(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 Qualquer coisaLLM
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 deBotão Upload
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 arquivoClassificação de lesões humanas como graus de incapacidade.pdf
.
Selecione o arquivo e clique emMudança para o 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 e Embed
Faça uma defesa.
Dicas abaixoWorkSpace atualizado com sucesso
Indica um salvamento bem-sucedido.
Aqui você precisa clicar emFixar no espaço de trabalho
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 Segundo grau de lesões leves
b) Fratura de costelas em dois ou mais lugares.
c) Fratura do esterno; fratura da clavícula; fratura da escápula.
d) Deslocamento da articulação esternoclavicular; deslocamento da articulação acromioclavicular.
e) Lesão no tórax que resulte em enfisema subcutâneo não auto-absorvido por uma semana.
f) Hematoquezia da cavidade torácica; pneumotórax.
g) Trauma penetrante na parede torácica.
h) Compressão do tórax com sinais de asfixia.
5.6.5 Lesões menores
a) Fratura de costelas; fratura da cartilagem costal.
5.7 Lesões abdominais
5.7. 1 Lesão grave grau I
a) Comprometimento da função hepática (grave).
b) Lesão gastrointestinal resultando em grave comprometimento da digestão e absorção e dependência de nutrição parenteral.
c) Insuficiência renal (estágio urêmico).
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)Qualquer coisaLLM
interface, vá para Configurações - Chave secreta da API - Gerar nova chave secreta da API
Usando o pacote de integração
Eu coloqueiQualquer coisaLLM
interface paraNGCBOT
e transformados em um pacote integrado.
Descompacte o link da Web na seçãoNGCBOT_LLM.zip
Zip, clique duas vezesLançador.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:WeChat 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 oespaço de trabalho
eQualquer coisaLLMkey
Esses dois valores estão corretos.
espaço de trabalho
Preencha o nome do espaço de trabalho que você criou com o AnythingLLM, em letras minúsculas.
Qualquer coisaLLMkey
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 íconeLançador.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ãoAutorizar
.
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-MD0VVV2X-PC02ZJ4'
--header 'Content-Type: application/json'
--data '{
"message": "Qual é a nota para duas costelas quebradas?" ,
"mode": "chat"
}'
Respostas
{
"id": "488ff13e-0206-4014-bf50-ea2d8e78c1c3",
"type": "textResponse",
"error": nulo, "chatId": 17, "error": 17
"chatId": 17, "textResponse".
"textResponse":"nOk, agora preciso abordar a pergunta do usuário: "Qual é a nota para duas costelas quebradas?" O usuário já fez essa pergunta antes e eu dei uma resposta, mas agora ele a está fazendo novamente e pode querer uma explicação mais detalhada ou diferente.nnPrimeiro, analise o contexto. No Contexto 0 fornecido, a seção 5.6.4 Ferimento leve de grau 2 menciona b) Duas ou mais fraturas de costela são um ferimento leve de grau 2. Portanto, duas costelas fraturadas atendem a esse critério e devem ser classificadas como uma lesão leve de segundo grau.nnO usuário pode ser um profissional da área jurídica, um membro da família ou a própria pessoa lesionada que deseja saber a gravidade da fratura para lidar com a indenização dos trabalhadores ou outros assuntos relacionados. Talvez ele não esteja familiarizado com os critérios de classificação, e é por isso que perguntou várias vezes. nnNo processo de raciocínio, preciso verificar se há outros critérios de classificação relevantes que possam afetar o resultado. Por exemplo, se há circunstâncias especiais, como a localização da fratura, se ela é acompanhada de lesão de órgãos internos etc. Esses fatores podem alterar a escala de classificação. No entanto, de acordo com o contexto fornecido, não há menção a essas circunstâncias, portanto, o julgamento só pode ser feito com base nas informações fornecidas.nn Além disso, os usuários podem querer saber como solicitar o reconhecimento de acidente de trabalho ou o processo de compensação subsequente, mas, devido às informações limitadas disponíveis, não posso fornecer as etapas específicas, mas posso sugerir que entrem em contato com o departamento de segurança do trabalho ou com uma instituição médica para obter orientação profissional.nn Em resumo, as duas costelas fraturadas se enquadram na categoria de Lesão leve de grau 2, que é uma conclusão baseada nos critérios fornecidos. O usuário pode precisar de mais aconselhamento jurídico ou médico para lidar com o assunto.nnnCom base nas informações contextuais que você forneceu:nnNo **5.6.4 Ferimento leve de grau 2**, ele menciona:n- **b) Costelas fraturadas em mais de 2 lugares**.nnPortanto, **duas costelas fraturadas são classificadas como ferimento leve de grau 2**". ,
"sources": [
{
"text": "5.2.4 Ferimento leve de grau 2 nna) Um único ferimento ou cicatriz no rosto com mais de 4,5 cm de comprimento; vários ferimentos ou cicatrizes com mais de 6,0 cm de comprimento cumulativo.nnb) Ferimentos penetrantes nas bochechas, com ferimentos na pele ou cicatrizes com mais de 1,0 cm de comprimento.nnc) Lacerações de todo o comprimento da boca e dos lábios, com ferimentos na pele ou cicatrizes com mais de 1,0 cm de comprimento.nnd) Cicatrizes maciças no rosto. A single scar of 3.0 cm² or more or multiple scars of 5.0 cm² or more. nne) Facial patches of fine keloidal scarring or pigmentation abnormalities of 8.0 cm² or more. f) Orbital wall fracture (other than a simple fracture of the medial orbital wall). nng) Eyelid defects. nnh) Mild ectropion of one eyelid. nnni) Drooping of the upper eyelid over the pupil of the eye. nnj) Inadequate closing of the eyelid of the eye. nnj) Inadequate closure of the eyelid of one eye. nnj) Inadequate closure of the eye. nnj) Inadequate closure of the eye. nnj) Inadequate closure of the eye. nnj) Inadequate closure of the eye. nnk) Lesão do órgão lacrimal com lacrimejamento em um dos lados. nn1) Incisão auricular ou comprimento da cicatriz de 6,0 cm ou mais cumulativamente. nnm) Desarticulação auricular, defeito ou deformidade por contratura de um total cumulativo de 151 TP3T ou mais da área auricular em um lado da aurícula. nnn) Deficiência da ponta nasal ou da flange nasal em um lado do nariz. nnno) Fratura cominutiva do osso nasal; fratura bilateral do osso nasal; fratura do osso nasal combinada com fratura do processo frontal da maxila; fratura do osso nasal combinada com fratura do septo nasal; fratura bilateral do osso nasal combinada com fratura do processo frontal da maxila. Fraturas do septo nasal; fraturas bilaterais do processo frontal do maxilar. nnp) Perda da língua. nnq) Perda de dentes ou fratura de dois ou mais dentes. nnr) Lesão substancial da glândula parótida, glândula submaxilar ou glândula sublingual. nns) Lesão que resulte em dificuldade de abertura da boca até o grau I. nnnt) Fraturas dos maxilares (exceto fraturas do processo alveolar e fraturas do processo frontal do maxilar do mesmo lado). u) Fraturas do osso zigomático. nnn5.2.5 Lesões menores nnnnnnnnnnna) Trauma de tecido mole facial. nnb) Lesão facial com cicatrizes ou alterações de pigmentação. nnc) Abrasão da pele facial com área de 2,0 cm² ou mais; contusão de tecido mole facial; arranhões faciais de 4,0 cm ou mais. nnnd) Fratura da parede orbital interna. nnne) Contusão ocular; trauma ocular que afeta a aparência do olho. nnf) Trauma auricular. nnn) Fratura do osso nasal; sangramento nasal. nnnnnnnnnna) Fratura do osso nasal; sangramento nasal. h) Fratura de protrusão frontal da maxila. nni) Rompimento da mucosa oral; lesão na língua. nnj) Dentes perdidos ou ausentes; fratura do processo alveolar; mais de 2 dentes soltos ou mais de 1 dente do terceiro grau de frouxidão. nn5.3 Deficiência auditiva nn5.3. 1 Ferimento grave de grau I nna) Perda auditiva binaural (≥ 91dB HL). nn5.3.2 Ferimento grave de grau II nna) Perda auditiva binaural em um ouvido (≥ 91dB HL). nnb) Deficiência auditiva em um ouvido (≥81dB HL) e no outro ouvido (≥41dB HL). nnc) Deficiência auditiva em um ouvido (≥81dB HL) com disfunção de equilíbrio vestibular ipsilateral. nnd) Deficiência auditiva bilateral em ambos os ouvidos (≥61dB HL). nnne) Perda de equilíbrio vestibular bilateral, com dificuldade de abrir os olhos para caminhar e incapacidade de ficar de pé lado a lado. nn5.3.2 Ferimento grave de grau 2 nn5.3.3 Ferimento leve de grau I nna) Perda auditiva bilateral (≥41 dB HL). nnb) Atresia bilateral. nn5.3.4 Ferimento leve de grau II nna) Perfuração traumática da membrana timpânica que não cicatrizou sozinha em 6 semanas. b.... .continua no documento fonte..." ,
"id": "210f98f0-d656-4c0f-b3d5-d617f6398eca",
"url": "file://C:\Users\XX\AppData\Roaming\anyllm-desktop\storage\hotdir\New DOCX Document.docx", "title": "Novo documento DOCX".
"título": "Novo documento DOCX.docx",
"docAuthor": "Nenhum autor encontrado", "description": "Nenhuma descrição encontrada".
"description": "Nenhuma descrição encontrada.", "docAuthor": "nenhum autor encontrado", "docAuthor": "nenhum autor encontrado", "description": "Nenhuma descrição encontrada".
"docSource": "arquivo pdf carregado pelo usuário.", "chunkSource": "arquivo pdf carregado pelo usuário.
"chunkSource": "localfile://C:\Users\XX\Desktop\New DOCX document.docx", "published": "2025/2000", "description": "Nenhuma descrição encontrada.", "docSource": "arquivo pdf carregado pelo usuário.", "docSource": "arquivo pdf carregado pelo usuário.
"publicado": "2025/2/7 13:00:52",
"wordCount": 126, "token_count_estimate".
"token_count_estimate": 3870
}
],.
"metrics": {
"prompt_tokens": 431, "completion_tokens": 326, {
"total_tokens": 757, "outputTps": 63.1782573643,
"outputTps": 63.178294573643406, "duration": 5.16.5
"duration" (duração): 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 scriptQualquer coisaLLM
A lógica do
Aqui, colocarei apenas o código.
def getAnythingLLM(self, content, messages). """ Modelo local do AnythingLLM param content: conteúdo da conversa param messages: lista de mensagens :return. """ op(f'[*]: Interface de diálogo local AnythingLLM sendo chamada... ...') messages.append({"role": "user", "content": f'{content}'}) dados = { "model": self.anythingLLMConfig.get('anythingllmModel'), "message": content } headers = { "Content-Type": "application/json", "Authorisation": self.anythingLLMConfig.get('anythingllmModel', "message": content } "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() conteúdo_do_assistente = json_data['textResponse'] if "" in assistant_content: assistant_content = assistant_content.split("")[1].strip() messages.append({"role": "assistant", "content": f"{assistant_content}"}) if len(messages) == 21. del messages[1] del messages[1]: del messages[1]: f"{assistant_content}"} return assistant_content, messages except Exception as e. op(f'[-]: Erro na interface de diálogo local AnythingLLM, mensagem de erro: {e}') return None, [{"role": "system", "content": f'{self.systemAiRole}'}]
Adicione oqualquer coisaLLMConfig
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