Versão com um clique de modelos grandes adequados para Gensokyo e Onebotv11
Acesso simples para iniciantes ao robô: basta conectar o robô a 6 plataformas principais, incluindo QQ
Intermediário - tutorial de encaixe de uma API: gerenciamento visual de API de modelo grande
Exemplo de configuração de API de modelo intermediário grande - modelo doméstico grande
Exemplo de configuração de API de modelo intermediário-grande - capítulo internacional
Pronto para usar – implantação rápida no Telegram
Comece – implante rapidamente no Discord
Pronto para usar - implantação rápida no Kook
Simples-SillyTavern-Hunyuan
Saco de feijão Simple-SillyTavern
Suporta todas as estruturas padrão Onebotv11. Suporta http-api e ws reverso, suporta streaming, vários arquivos de configuração (várias palavras de prompt).
Tamanho ultrapequeno, contexto de manutenção sqlite integrado, suporta proxy,
O encaixe com um clique na estrutura Gensokyo requer apenas a configuração do endereço http reverso para receber informações e o endereço http de encaminhamento para chamar a API de envio.
Manter automaticamente o contexto com base no banco de dados sqlite. No modo de conversação, use o comando reset para redefinir.
Sistema, cartão de função, comprimento do contexto podem ser definidos,
Ao mesmo tempo, a API de sabor original openai com contexto automático é fornecida para o mundo externo (3 parâmetros clássicos, id, id pai, messgae)
Ele pode ser executado como uma API e também pode ser conectado à plataforma aberta do robô QQ do canal QQ com um clique.
Pode converter o tipo sse de gpt, incrementar ou apenas enviar novo sse
A segurança da memória SSE em um ambiente simultâneo suporta a manutenção da transmissão SSE bidirecional simultânea para vários usuários
TencentHunyuan
Tencent Yuan Qi
Baidu Wenxin
Ali Tongyi
Espectro de sabedoria Tsinghua
Byte Vulcão (saco de feijão)
OpenAI
groQ
Corredor Rwkv
Uma API
Converta as APIs dessas plataformas em uma estrutura de API unificada, forneça contexto e suporte ao retorno SSE
Ao definir o token da plataforma correspondente em yml e definir AllApi=true, a troca de chamadas pode ser feita ao mesmo tempo.
Estrutura Gensokyo-plataforma aberta QQ
Gensokyo Framework-Discord
Estrutura Gensokyo-Kook
Estrutura Gensokyo - conta de assinatura WeChatconta pública
Gensokyo Framework-Telegrama
Todas as implementações do Onebotv11
Múltiplas medidas de segurança completas para garantir ao máximo a segurança dos desenvolvedores e aplicativos llm.
Várias rodadas de controle de qualidade simulado podem ser definidas para fortalecer palavras de prompt de função, redefinir respostas, respostas de palavras seguras e medidas de segurança de primeiro nível podem ser personalizadas
Suporta múltiplas interconexões gsk-llm para formar aplicativos de agente AI, como um llm classificando palavras de prompt para outro llm, auditando palavras de prompt e medidas de segurança secundárias
A lista de palavras seguras do vetor, lista de palavras de interceptação sensível baseada na similaridade do vetor, é realizada antes da substituição do texto, a terceira medida de segurança
A ultraeficiente regra de substituição de texto IN-Out implementada pelo algoritmo AhoCorasick pode substituir um grande número de n palavras-chave pelas novas palavras-chave correspondentes. O quarto nível de medidas de segurança.
Os resultados podem ser repassados pelo Baidu-Tencent novamente, interface de revisão de texto, quinta camada de medidas de segurança
O log é totalmente registrado e o parâmetro de linha de comando -test pode executar rapidamente o script de autoteste de segurança em test.txt.
A linha de comando -mlog executará a formatação de controle de qualidade em todos os logs armazenados atualmente, revisá-los-á diariamente, extrairá novas regras de segurança de cenários reais e aumentará continuamente a segurança.
A filtragem de idioma permite que o llm aceite apenas o idioma especificado, converta automaticamente o chinês tradicional em chinês simplificado, aplique regras de segurança e defenda o sétimo nível de medidas de segurança em suas próprias áreas de especialização.
Limite de comprimento de palavra de prompt, controle a segurança da maneira mais original, evite que usuários mal-intencionados construam palavras de prompt longas, o oitavo nível de medidas de segurança
Por meio desses métodos, crie um robô conversacional llm que seja o mais seguro possível.
Substituição de camada dupla IN-OUT de texto, você mesmo pode realizar a substituição dinâmica e a modificação de palavras de prompt internas, o que é mais seguro e poderoso
Com base na estrutura da tabela de dados vetoriais projetada pelo SQLite, o cache pode ser usado para economizar dinheiro e personalizar a taxa de acerto e a precisão do cache.
Um aplicativo de cenário especializado otimizado para cenários de alta eficiência, alto desempenho e alto QPS. Ele não possui funções e instruções redundantes e é totalmente projetado em torno de humanos digitais.
Execute o programa executável gensokyo-llm usando a linha de comando
Configure config.yml para iniciar e, em seguida, ouça a porta port para fornecer /conversation api
Suporta o desenvolvimento de middleware Entre a camada da estrutura gensokyo e a solicitação http do gensokyo-llm, o middleware pode ser desenvolvido para implementar expansão vetorial, expansão de banco de dados e modificação dinâmica de problemas do usuário.
Suporta conexão reversa ws e suporta conexão simultânea a vários onebotv11 http-api
Este documento fornece instruções sobre o método de chamada da interface API e o formato do arquivo de configuração para ajudar os usuários a usá-lo e configurá-lo corretamente.
conversation
e gensokyo
deste sistema suportam a especificação de configurações específicas por meio do parâmetro de consulta ?prompt=xxx
.
O parâmetro prompt
permite ao usuário especificar o arquivo YAML de configuração localizado na pasta prompts
do arquivo executável (exe). Use este parâmetro para ajustar dinamicamente o comportamento da API e retornar conteúdo.
A pasta de prompts precisa ter um teclado.yml padrão para gerar bolhas. Suas palavras de prompt do sistema precisam seguir as regras de prompts do gerador de bolhas json.
Os arquivos de configuração devem seguir o seguinte formato YAML. Um exemplo de arquivo de configuração é fornecido aqui e mostra como definir o conteúdo do diálogo para diferentes funções:
Prompt :
- role : " system "
content : " Welcome to the system. How can I assist you today? "
- role : " user "
content : " I need help with my account. "
- role : " assistant "
content : " I can help you with that. What seems to be the problem? "
- role : " user "
content : " aaaaaaaaaa! "
- role : " assistant "
content : " ooooooooo? "
settings :
# 以下是通用配置项 和config.yml相同
useSse : true
port : 46233
/gensokyo
O sistema oferece suporte a parâmetros prompt
e parâmetros api
adicionais ao fazer solicitações ao endpoint /gensokyo
. Os parâmetros api
permitem especificar endpoints completos, como /conversation_ernie
. Para habilitar este recurso, você precisa habilitar a opção allapi
na configuração.
Solicitação de exemplo:
GET /gensokyo?prompt=example&api=conversation_ernie
Lista de endpoints suportados: (requer configuração: allApi: true)
http . HandleFunc ( "/conversation_gpt" , app . ChatHandlerChatgpt )
http . HandleFunc ( "/conversation_hunyuan" , app . ChatHandlerHunyuan )
http . HandleFunc ( "/conversation_ernie" , app . ChatHandlerErnie )
http . HandleFunc ( "/conversation_rwkv" , app . ChatHandlerRwkv )
http . HandleFunc ( "/conversation_tyqw" , app . ChatHandlerTyqw )
http . HandleFunc ( "/conversation_glm" , app . ChatHandlerGlm )
/conversation
Semelhante a /gensokyo
, o endpoint /conversation
oferece suporte a parâmetros prompt
adicionais.
Solicitação de exemplo:
GET /conversation?prompt=example
prompt
de parâmetros O parâmetro prompt
fornecido fará referência ao arquivo YAML correspondente na pasta /prompts
no diretório executável (por exemplo, xxxx.yml
, onde xxxx
é o valor do parâmetro prompt
).
Ao escrever um grande número de arquivos yml com prompts, você pode trocar cartões de personagens. Com o mesmo personagem, você pode trocar histórias e cenas diferentes.
Para o formato de configuração do arquivo YAML, consulte a seção Formato do arquivo de configuração YAML . Os itens de configuração listados abaixo suportam substituição dinâmica em solicitações:
Cada parâmetro implementa cobertura de configuração
Se houver alguma omissão e a cobertura da configuração precisar ser suportada, envie um problema.
Todos os valores bool devem ser especificados no yml coberto pelo arquivo de configuração, caso contrário serão considerados falsos.
A substituição dinâmica da configuração é um recurso que eu mesmo concebi. Usando esse recurso, você pode obter recursão entre arquivos de configuração. Por exemplo, você pode passar prompt=a em seu middleware, especificar o Lotus para chamar a si mesmo em a.yml e especificar o próximo. parâmetro de prompt no endereço de lótus como b, b especifica c, c especifica d e assim por diante.
Este projeto implementa um fluxo de controle de palavras imediatas e um método de construção de contexto controlável. Com base nos vários arquivos de configuração implementados neste projeto, saltos condicionais e alternâncias entre arquivos de configuração podem ser realizados.
Ele permite que os usuários circulem entre vários conjuntos de palavras de prompt de acordo com algumas condições, em ordem e opcionalmente, e realiza jogos de amor de texto, jogos de aventura, enredos não contínuos de vários ramos e outros trabalhos.
- [x] promptMarks :
- BranchName : "去逛街路上"
Keywords : ["坐车", "走路", "触发"]
- BranchName : "在家准备"
Keywords : ["等一下", "慢慢", "准备"]
- [x] enhancedQA : true
- [x] promptChoicesQ :
- Round : 1
ReplaceText : "回家吧"
Keywords : ["我累了", "不想去了"]
- Round : 2
ReplaceText : "我们打车去"
Keywords : ["快点去", "想去", "早点"]
- Round : 3
ReplaceText : "我们走着去"
Keywords : ["不着急", "等下"]
- Round : 1
ReplaceText : "放松一下"
Keywords : [] # 相当于 enhancedChoices = false
- [x] promptChoicesA : 同上。
- [x] promptCoverQ : 只有Q没有A,格式同上,Choices是附加,cover是覆盖。
- [x] promptCoverA : # 同上
- [x] switchOnQ :
- round : 1
switch : ["故事退出分支", "下一个分支"]
keywords : ["不想", "累了", "想", "不累"]
- [x] switchOnA :
- round : 1
switch : ["晚上分支"]
keywords : ["时间不早了"]
- [x] exitOnQ :
- round : 1
keywords : ["退出", "忘了吧", "重置", "无聊"]
- [x] exitOnA :
- round : 1
keywords : ["退出", "我是一个AI", "我是一个人工", "我是一个基于"]
- [x] envType : 0 # 0=不使用场景描述, 1=在本轮llm回复前发送场景描述, 2=在本轮llm回复后发送场景描述, 场景描述支持[image:xxx][pic:xxx][图片:xxx][背景:xxx]标签, xxx为相对或绝对路径, 需在exe运行目录下
- [x] envPics : [] # 现阶段ai速度太慢,人工指定,数组代表多个,每个数组成员以1: 2: 开始代表对应第几轮.
- [x] envContents : [] # 如果要跳过某个轮次,直接指定文字是2: 图片也是2: 代表本轮文图是空的.
- [x] promptChanceQ :
- probability : 50
text : "让我们休息一下"
- probability : 30
text : "继续前进"
- probability : 70
text : "停下来看看周围"
- probability : 10
text : "尝试一些新东西"
Os parâmetros acima estão todos localizados na seção de configurações do arquivo de configuração múltipla. Você pode determinar o comprimento das palavras de prompt para cada cena e o comprimento de cada cena promptMarksLength para controlar a granularidade do gráfico.
Método de acionamento do modo história 1, controle de middleware, chamando a porta /gensokyo por si só e anexando diferentes parâmetros de prompt e cortando manualmente
Defina o endereço http api da estrutura do robô ob11 em gsk-llm O aplicativo plug-in ob11 não é responsável pelo envio de mensagens. Ele apenas faz julgamentos condicionais com base no conteúdo da mensagem. controlar as próprias condições.
O segundo método de acionamento do modo história é alternar automaticamente as ramificações com base em palavras-chave, configurando switchOnQ e switchOnA no arquivo de configuração padrão config.yml.
Combinado com a capacidade do arquivo de configuração nos parâmetros de prompt para avançar a história, um enredo básico de IA com foco em palavras de prompt pode ser realizado. Além disso, também é necessário projetar um -keyboard.yml correspondente para cada prompt.yml. gerar bolhas.
As palavras-chave de promptMarks são [], o que significa que pressionar promptMarksLength para alternar os arquivos de palavras de prompt. promptMarksLength representa o comprimento do contexto mantido por este arquivo de palavras de prompt.
Quando promptMarksLength for menor que 0, as ramificações subsequentes serão lidas de promptMarks e alternadas aleatoriamente. Quando promptMarkType=1,
1=Acionado com base em condições, também acionado quando promptMarksLength é atingido.
Para obter detalhes de configuração, consulte process control-promptmarks.md
Este branch será acionado quando o usuário e o modelo falarem a marca (você mesmo precisa escrever a palavra do prompt para que llm possa pronunciá-la de acordo com as condições).
Você pode usar as palavras de prompt do sistema e o controle de qualidade do fragmento da história atual para orientar a IA na saída das palavras de mudança acordadas com você, realizando assim o design de várias palavras-gatilho para cada ramo de destino, permitindo que o modelo grande decida o desenvolvimento direção da história por conta própria.
Quando EnhancedQA for falso, o QA predefinido no arquivo de configuração será adicionado ao topo do QA do usuário, existente na memória do llm (sem afetar a direção geral do diálogo), formando um impacto fraco
Quando o EnhancedQA é verdadeiro, tentei mover a posição do QA predefinido no arquivo de configuração de cima para baixo para a frente da conversa atual do usuário, mas o efeito não foi o ideal,
Atualmente, ele será misturado e integrado ao histórico de controle de qualidade do usuário atual para orientar a entrada do usuário até certo ponto, influenciando assim a direção do processo da história.
É introduzido o parâmetro "Fluxo de controle de configuração", que é um método menos flexível que o ai-agent, mas possui maior controlabilidade do enredo, menor velocidade de geração e menor custo.
promptChoicesQ e promptChoicesA Documentação: Process control-promptchoicesQ Process control-promptCoverQ Process control-promptChanceQ
switchOnQ significa alternar a ramificação atual quando o texto correspondente for encontrado em Q. O mesmo se aplica a switchOnA e seu método de configuração é o mesmo de promptChoices.
Ativação de controle de processoQA
exitOnQ significa que a ramificação atual será encerrada quando a palavra-chave especificada for detectada. Saída de controle de processoQA
promptMarks, switchOnQ e switchOnA são funcionalmente iguais. Todos eles saltam para ramificações com base em palavras-chave. promptMarks é executado primeiro, independentemente de rodadas ou QA serem mais específicas, distinguindo Q e A, distinguindo rodadas e detalhes de implementação. Pular.
Se houver ramificações fixas que não precisam ser trocadas, defina o promptMarksLength do yml como 99999
promptMarksComprimento: 99999
Isso evita a troca por engano para uma ramificação inexistente, causando erros de sessão.
O fluxo de controle de configuração é simples e intuitivo. A lógica do diálogo é gerenciada por meio do arquivo de configuração. O arquivo de configuração é fácil de manter. atualizar a lógica do diálogo sem conhecimento de programação.
Alta certeza do enredo: Dadas as mesmas informações e configuração, a direção do enredo é geralmente consistente, o que é muito importante para garantir a coerência e previsibilidade do enredo do diálogo.
O custo é baixo e o contexto é habilmente combinado e substituído em vez de ser processado por múltiplas IAs ao mesmo tempo. Consome quase a mesma quantidade de tokens que uma conversa normal, economizando dinheiro.
É rápido, gera resultados como controle de qualidade de diálogo normal e escreve enredos como scripts de jogos.
História de IA de baixo custo e soluções inovadoras adequadas para desenvolvedores individuais e pequenas equipes de desenvolvimento. Baixo custo, alta velocidade e alta controlabilidade O efeito melhorará diretamente com a melhoria do modelo e do efeito imediato.
Para cenários de bate-papo de plotagem de diálogo, se a plotagem for relativamente fixa, o caminho do diálogo for predefinido e a frequência de atualização não for alta, é mais adequado usar o fluxo de controle de configuração, pois fornece um alto grau de controlabilidade e fácil de usar. -compreender o método de gestão.
Se o sistema de diálogo exigir um alto grau de interatividade e personalização, ou se as mudanças no enredo forem complexas e precisarem ser ajustadas dinamicamente com base no feedback e comportamento específico do usuário, então pode ser mais apropriado usar uma solução de agente baseada em IA, que requer maiores investimentos técnicos e custos de manutenção.
Esta seção descreve informações específicas do endpoint para comunicação com a API.
propriedade | Detalhes |
---|---|
URL | http://localhost:46230/conversation |
método | POST |
O corpo da solicitação que o cliente deve enviar ao servidor deve estar no formato JSON. A tabela a seguir detalha o tipo de dados e a descrição de cada campo.
Nome do campo | tipo | descrever |
---|---|---|
message | Corda | O conteúdo da mensagem enviada pelo usuário |
conversationId | Corda | Identificador exclusivo da sessão de conversação atual |
parentMessageId | Corda | O identificador da mensagem anterior associada a esta mensagem |
O objeto JSON a seguir mostra a estrutura do corpo da solicitação ao enviar uma solicitação para este endpoint da API:
{
"message" : "我第一句话说的什么" ,
"conversationId" : " 07710821-ad06-408c-ba60-1a69bf3ca92a " ,
"parentMessageId" : " 73b144d2-a41f-4aeb-b3bb-8624f0e54ba6 "
}
Este exemplo mostra como construir um corpo de solicitação que contém o conteúdo da mensagem, um identificador exclusivo para a sessão de conversação atual e um identificador para a mensagem anterior. Este formato garante que os dados solicitados não só cumprem as regras de processamento do servidor, mas também facilita a manutenção da continuidade do contexto da conversação.
Uma resposta bem-sucedida retornará o código de status 200
e um objeto JSON com os seguintes campos:
Nome do campo | tipo | descrever |
---|---|---|
response | Corda | O conteúdo da mensagem de resposta da interface |
conversationId | Corda | Identificador exclusivo da conversa atual |
messageId | Corda | Identificador exclusivo da mensagem atual |
details | Objeto | Incluir detalhes adicionais de uso |
usage | Objeto (em details ) | Detalhes de uso, como contagem de tokens |
{
"response" : "回答内容" ,
"conversationId" : " c9b8746d-aa8c-44b3-804a-bb5ad27f5b84 " ,
"messageId" : " 36cc9422-da58-47ec-a25e-e8b8eceb47f5 " ,
"details" : {
"usage" : {
"prompt_tokens" : 88 ,
"completion_tokens" : 2
}
}
}
Pode ser executado em várias arquiteturas (o Android nativo ainda não é compatível, o sqlitev3 requer cgo). Como a compilação do cgo é complicada, plataforma arm ou outras arquiteturas, você pode tentar compilá-lo localmente na arquitetura do sistema correspondente.
Método API chama canal QQ para acesso direto
Parâmetros de solicitação de auditor
Quando a solicitação precisar ser enviada para outro LLM da GSK como auditor, o formato JSON que deve ser retornado é o seguinte:
{ "result" : %s }
%s
aqui representa um espaço reservado que será substituído por um valor de ponto flutuante específico.
Resultados da solicitação de geração de bolhas
Ao solicitar outro GSK LLM para gerar bolhas, o formato JSON que deve ser retornado é o seguinte:
[ " " , " " , " " ]
Isso significa que o resultado da geração da bolha é um array contendo três strings. Este formato é usado para especificar três bolhas diferentes ao retornar resultados, ou menor ou igual a 3.
Não é mais necessário abrir vários gsk-llm para implementar funções semelhantes a agentes. Com base na nova cobertura de múltiplas configurações, parâmetros de prompt e recursos do Lotus, você mesmo pode solicitar a implementação de recursos complexos, como geração de bolhas e avanço de histórias.
GetAIPromptkeyboardPath pode ser seu próprio endereço ou ter parâmetros de prompt.
Ao usar middleware para especificar parâmetros de prompt, a configuração está localizada na pasta de prompts e seu formato é xxx-keyboard.yml. Se o middleware não for usado, especifique os parâmetros de prompt no caminho e coloque o xxx.yml correspondente nos prompts. pasta. )
Defina o endereço /conversation do trabalho conjunto gsk-llm das palavras do prompt do sistema. É acordado que as palavras do prompt do sistema precisam retornar uma matriz json de texto (3).
Este projeto refere-se às ideias dos seguintes projetos bem conhecidos e implementa um formato simplificado de configuração de fluxo de controle de texto de IA.
Rasa
Fio
Escritor de tinta