O FastGPT é um sistema de perguntas e respostas de base de conhecimento baseado no modelo LLM, desenvolvido pela equipe do Circle Cloud, que fornece processamento de dados pronto para uso, invocação de modelos e outros recursos. O FastGPT recebeu 19,4 mil estrelas no Github.
O SiliconCloud do Silicon Flow é uma grande plataforma de serviço de nuvem de modelos com seu próprio mecanismo de aceleração. O SiliconCloud pode ajudar os usuários a testar e usar modelos de código aberto de forma rápida e de baixo custo. A experiência real é que a velocidade e a estabilidade de seus modelos são muito boas, e eles são ricos em variedade, abrangendo dezenas de modelos, como idiomas, vetores, reordenação, TTS, STT, mapeamento, geração de vídeo etc., que podem satisfazer todas as necessidades de modelos no FastGPT.
Este artigo é um tutorial escrito pela equipe do FastGPT para apresentar uma solução para a implantação do FastGPT no desenvolvimento local usando exclusivamente modelos do SiliconCloud.
1 Obtenção da chave da API da plataforma SiliconCloud
- Abra o site do SiliconCloud e registre-se/conecte-se para obter uma conta.
- Após concluir o registro, abra API Key , crie uma nova chave de API e clique na chave para copiá-la para uso futuro.
2 Modificando as variáveis de ambiente do FastGPT
OPENAI_BASE_URL=https://api.siliconflow.cn/v1 # Preencha a chave Api fornecida pelo console do SiliconCloud CHAT_API_KEY=sk-xxxxxx
Documentação de desenvolvimento e implantação do FastGPT: https://doc.fastgpt.cn
3 Modificação do arquivo de configuração do FastGPT
Os modelos no SiliconCloud foram selecionados como configurações FastGPT. Aqui, o Qwen2.5 72b é configurado com modelos puros de linguagem e visão; o bge-m3 é selecionado como o modelo de vetor; o bge-reranker-v2-m3 é selecionado como o modelo de reorganização. Escolha fish-speech-1.5 como o modelo de fala; escolha SenseVoiceSmall como o modelo de entrada de fala.
Observação: O modelo ReRank ainda precisa ser configurado com a chave de API uma vez.
{ "llmModels": [ { "provider": "Other", // Provedor de modelo, usado principalmente para exibição de categoria, atualmente tem provedores integrados, incluindo https://github.com/labring/FastGPT/blob/main/packages/global/core/ai/provider.ts, pode pr Fornecer um novo provedor ou apenas preencher Other. "model": "Qwen/Qwen2.5-72B-Instruct", // nome do modelo (corresponde ao nome do modelo do canal no OneAPI) "name": "Qwen2.5-72B-Instruct", // alias do modelo "maxContext": 32000, // Contexto máximo "maxResponse": 4000, // resposta máxima "quoteMaxToken": 30000, // Conteúdo máximo da citação "maxTemperature": 1, // Temperatura máxima "charsPointsPrice": 0, // n pontos/1k token (versão comercial) "censor": false, // se deve ativar a censura sensível (versão comercial) "vision": false, // se há suporte para entrada de imagem "datasetProcess": true, // se deve ser definido como modelo de compreensão de texto (QA), certifique-se de que pelo menos um deles seja verdadeiro, caso contrário, a base de conhecimento informará erros "usedInClassify": true, // se deve ser usado para classificação de perguntas (certifique-se de que pelo menos um deles seja verdadeiro) "usedInExtractFields": true, // se deve ser usado para extração de conteúdo (certifique-se de que pelo menos um deles seja verdadeiro) "usedInToolCall": true, // se deve ser usado para chamadas de ferramentas (certifique-se de que pelo menos uma seja verdadeira) "usedInQueryExtension": true, // se for usado para otimização de perguntas (certifique-se de que pelo menos um seja verdadeiro) "toolChoice": true, // se a opção de ferramenta é suportada (usada para categorização, extração de conteúdo, chamadas de ferramenta). "functionCall": false, // se há suporte ou não para chamadas de função (usado para categorização, extração de conteúdo, chamadas de ferramenta). Usará primeiro o toolChoice; se for falso, usará o functionCall; se ainda for falso, usará o modo de palavra de prompt) "customCQPrompt": "", // prompter de categorização de texto personalizado (não oferece suporte a modelos de chamadas de ferramentas e funções) "customExtractPrompt": "", // prompter de extração de conteúdo personalizado "defaultSystemChatPrompt": "", // Prompt de bate-papo padrão do sistema para diálogos "defaultConfig": {}, // Algumas configurações padrão (por exemplo, top_p do GLM4) a serem mantidas como reféns ao solicitar APIs "fieldMap": {} // mapa de campo (o modelo o1 precisa mapear max_tokens para max_completion_tokens) }, {} { "provider": "Other", "model": "Qwen/", { "model": "Qwen/Qwen2-VL-72B-Instruct", "name": "Qwen2-VL-72B-Instruct", } "name": "Qwen2-VL-72B-Instruct", "name": "Qwen2-VL-72B-Instruct", "maxContext": 32 "quoteMaxToken": 30000, "maxTemperature": 1.000.000, "maxTemperature": 1.000.000 "maxTemperature": 1, "charsPointsPrice". "charsPointsPrice": 0, "censor": falso, falso "vision": true, "datasetProcess". "usedInExtractFields": false, "usedInToolCall": false, "usedInToolCall": false "usedInQueryExtension": false, "toolChoice": false, "usedInExtractFields": false, "usedInToolCall": false, "usedInQueryExtension": false, "functionCall": falso, "customCQPrompt": falso "customCQPrompt": "", "customExtractPrompt": false "defaultConfig": {} } ], "vectorModels": [", "defaultConfig": {} "vectorModels": [ { "provider": "Other", "model": "Pro/BAAI/bge-m3", "vectorModels": [ { "model": "Pro/BAAI/bge-m3", "name": "Pro/BAAI/bge-m3", "name": "Pro/BAAI/bge-m3", "charsPointsPrice": 0, "defaultToken": 512 "maxToken": 5000, "weight": 100 "weight": 100 } ], "reRankModels". "reRankModels": [ { "model": "BAAI/bge-reranker-v2-m3", // O modelo aqui precisa corresponder ao modelo fluxo de silício O nome do modelo do "name": "BAAI/bge-reranker-v2-m3", "requestUrl": "https://api.siliconflow.cn/v1/rerank", "requestAuth". "requestAuth": "chave solicitada no siliconflow" } ], "audioSpeechModels", "audioSpeechModels "audioSpeechModels": [ { "model": "fishaudio/fish-speech-1.5", "name": "fish-speech-1.5", { "name": "fish-speech-1.5", [ "audioSpeechModels": [ "voices": [ [ "model": "fish-speech-1.5", "voices": [ "label": "fish-alex", "value": "fish-audio/fish-speech-1.5", "voices": [ { "bufferId": "fish-alex" }, { "label": "fish-anna", "value": "fish-audio", "value": "fish-alex", { "value": "fishaudio/fish-speech-1.5:anna", { "bufferId": "bufferId". "bufferId": "fish-anna" }, { "label": "fish-bella", "value": "fishaudio/fish-speech-1.5:anna", { "value": "fishaudio/fish-speech-1.5:bella", { "bufferId": "fish-bella" }, } { "label": "fish-benjamin", "value": "fish-audio/fish-speech-1.5:bella", { "value": "fishaudio/fish-speech-1.5:benjamin", { "bufferId": "fish-benjamin" }, { { "label": "fish-charles", "value": "fish-audio", { "value": "fishaudio/fish-speech-1.5:charles", { "bufferId": "fish-charles" }, } { "label": "fish-claire", "value": "fish-charles", { "value": "fishaudio/fish-speech-1.5:claire", { "bufferId": "bufferId". "bufferId": "fish-claire" }, { "label": "fish-david", "value": "fish-audio/fish-speech-1.5:claire", { "value": "fishaudio/fish-speech-1.5:david", { "bufferId": "bufferId": "fish-david", { "bufferId": "fish-david" }, { "label": "fish-diana", "value": "fish-audio/fish-speech-1.5:david", { "value": "fishaudio/fish-speech-1.5:diana", { "bufferId": "bufferId". "bufferId": "fish-diana" } ] } ] "whisperModel": { "model": "FunAudioLLM/SenseVoiceSmall", "name": "SenseVoiceSmall", "charsPointsPrice": 0 "charsPointsPrice": 0 } }
4 Reinicie o FastGPT
5 Teste de experiência
Teste o diálogo e o reconhecimento de imagens
Sinta-se à vontade para criar um novo aplicativo simples, selecionar o modelo correspondente e testá-lo com o upload de imagens ativado.
Como você pode ver, o desempenho do modelo 72B é muito rápido e, se não houver alguns 4090 locais, sem mencionar a configuração do ambiente, temo que a saída demore 30s.
Teste a Importação da Base de Conhecimento e o Questionário da Base de Conhecimento
Crie uma nova base de conhecimento (como apenas um modelo vetorial está configurado, a seleção do modelo vetorial não será exibida na página).
Para importar um arquivo local, basta selecionar o arquivo e ir até o próximo. 79 índices e levou cerca de 20 segundos para ser concluído. Agora vamos testar o questionário da Base de Conhecimento.
Primeiro, volte ao aplicativo que acabamos de criar, selecione Knowledge Base, ajuste os parâmetros e inicie o diálogo.
Quando o diálogo estiver concluído, clique na citação na parte inferior para visualizar os detalhes da citação, bem como para ver as pontuações específicas de recuperação e reordenação.
Teste a reprodução de voz
Continuando no aplicativo agora, encontre o Voice Play no lado esquerdo da configuração e clique nele para selecionar um modelo de voz na janela pop-up e experimentá-lo.
Entrada de idioma de teste
Vá em frente e encontre a entrada de voz na configuração do lado esquerdo do aplicativo e clique nela para ativar a entrada de idioma na janela pop-up.
Quando estiver ativado, na caixa de entrada de diálogo, um ícone de microfone será adicionado, e você poderá clicar nele para fazer a entrada de voz.
resumos
Se você quiser experimentar rapidamente o modelo de código aberto ou usar rapidamente o FastGPT e não quiser solicitar todos os tipos de chave de API em diferentes provedores de serviços, poderá escolher o modelo do SiliconCloud para uma experiência rápida.