Guias
Modelo
Interfaces
51min
esta seção descreve os métodos de interface e as explicações dos parâmetros que precisam ser implementados pelos provedores e diferentes tipos de modelos provedor herdar a classe base base model provider modelprovider e implementar as seguintes interfaces def validate provider credentials(self, credentials dict) > none """ validar credenciais do provedor você pode escolher qualquer método de validação de credenciais do tipo de modelo ou implementar o método de validação você mesmo, por exemplo obter a api da lista de modelos se a validação falhar, lance uma exceção \ param credentials credenciais do provedor, o formulário das credenciais é definido em `provider credential schema` """ credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema no arquivo de configuração yaml do provedor incluem entradas como api key se a verificação falhar, lance o erro errors validate credentialsvalidatefailederror modelo os modelos são divididos em 5 tipos diferentes, cada um herdando de diferentes classes base e exigindo a implementação de diferentes métodos todos os modelos precisam implementar uniformemente os seguintes 2 métodos verificação de credenciais do modelo semelhante à verificação de credenciais do provedor, esta etapa envolve a verificação para um modelo individual def validate credentials(self, model str, credentials dict) > none """ validar credenciais do modelo \ param model nome do modelo \ param credentials credenciais do modelo \ return """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key se a verificação falhar, lance o erro errors validate credentialsvalidatefailederror tabela de mapeamento de erro de invocação quando há uma exceção na invocação do modelo, ela precisa ser mapeada para o tipo de invokeerror especificado pelo runtime isso facilita a capacidade do paragraph de lidar com diferentes erros com ações de acompanhamento apropriadas erros de runtime invokeconnectionerror erro de conexão de invocação invokeserverunavailableerror provedor de serviço de invocação indisponível invokeratelimiterror limite de taxa de invocação atingido invokeauthorizationerror falha na autorização da invocação invokebadrequesterror erro de parâmetro de invocação @property def invoke error mapping(self) > dict\[type\[invokeerror], list\[type\[exception]]] """ mapear erro de invocação do modelo para erro unificado a chave é o tipo de erro lançado para o chamador o valor é o tipo de erro lançado pelo modelo, que precisa ser convertido em um tipo de erro unificado para o chamador \ return mapeamento de erro de invocação """ você pode se referir ao invoke error mapping do openai como exemplo llm herdar a classe base base large language model largelanguagemodel e implementar as seguintes interfaces invocação llm implementar o método central para a invocação llm, que pode suportar tanto retornos de streaming quanto síncronos def invoke(self, model str, credentials dict, prompt messages list\[promptmessage], model parameters dict, tools optional\[list\[promptmessagetool]] = none, stop optional\[list\[str]] = none, stream bool = true, user optional\[str] = none) \\ > union\[llmresult, generator] """ invocar modelo de linguagem grande \ param model nome do modelo \ param credentials credenciais do modelo \ param prompt messages mensagens de prompt \ param model parameters parâmetros do modelo \ param tools ferramentas para chamada de ferramentas \ param stop palavras de parada \ param stream é resposta em streaming \ param user id único do usuário \ return resposta completa ou gerador de resultados de resposta em streaming """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key prompt messages (array\[promptmessage]) lista de prompts se o modelo for do tipo completion, a lista precisa incluir apenas um elemento userpromptmessage ; se o modelo for do tipo chat, requer uma lista de elementos como systempromptmessage , userpromptmessage , assistantpromptmessage , toolpromptmessage , dependendo da mensagem model parameters (objeto) parâmetros do modelo os parâmetros do modelo são definidos pelas parameter rules no yaml de configuração do modelo tools (array\[promptmessagetool]) \[opcional] lista de ferramentas, equivalente à função na chamada de ferramentas ou seja, a lista de ferramentas para chamada de ferramentas stop (array\[string]) \[opcional] sequências de parada a saída do modelo vai parar antes da string definida pela sequência de parada stream (bool) se deve ser gerado em streaming, o padrão é true a saída em streaming retorna generator\[llmresultchunk] , a saída não em streaming retorna llmresult user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retornos a saída em streaming retorna generator\[llmresultchunk] , a saída não em streaming retorna llmresult pré calculando tokens de entrada se o modelo não fornecer uma interface de tokens pré calculados, você pode retornar diretamente 0 def get num tokens(self, model str, credentials dict, prompt messages list\[promptmessage], tools optional\[list\[promptmessagetool]] = none) > int """ obter número de tokens para mensagens de prompt fornecidas \ param model nome do modelo \ param credentials credenciais do modelo \ param prompt messages mensagens de prompt \ param tools ferramentas para chamada de ferramentas \ return """ para explicações dos parâmetros, consulte a seção acima sobre invocação llm buscar esquema de modelo personalizável \[opcional] def get customizable model schema(self, model str, credentials dict) > optional\[aimodelentity] """ obter esquema de modelo personalizável \ param model nome do modelo \ param credentials credenciais do modelo \ return esquema do modelo """ quando o provedor suporta a adição de llms personalizados, este método pode ser implementado para permitir que modelos personalizados obtenham o esquema do modelo o retorno padrão é nulo textembedding herdar a classe base base text embedding model textembeddingmodel e implementar as seguintes interfaces invocação de embedding def invoke(self, model str, credentials dict, texts list\[str], user optional\[str] = none) \\ > textembeddingresult """ invocar modelo de embedding de texto \ param model nome do modelo \ param credentials credenciais do modelo \ param texts textos para incorporar \ param user id único do usuário \ return resultado de embeddings """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key texts (array\[string]) lista de textos, capaz de processamento em lote user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retornos entidade textembeddingresult pré calculando tokens def get num tokens(self, model str, credentials dict, texts list\[str]) > int """ obter número de tokens para textos fornecidos \ param model nome do modelo \ param credentials credenciais do modelo \ param texts textos para incorporar \ return """ para explicações dos parâmetros, consulte a seção acima sobre invocação de embedding rerank herdar a classe base base rerank model rerankmodel e implementar as seguintes interfaces invocação de rerank def invoke(self, model str, credentials dict, query str, docs list\[str], score threshold optional\[float] = none, top n optional\[int] = none, user optional\[str] = none) \\ > rerankresult """ invocar modelo de rerank \ param model nome do modelo \ param credentials credenciais do modelo \ param query consulta para rerank \ param docs documentos a serem reordenados \ param score threshold limiar de pontuação \ param top n número máximo de documentos retornados \ param user id único do usuário \ return resultado de rerank """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key query (string) consulta de rerank docs (array\[string]) documentos a serem reordenados score threshold (float) \[opcional] limiar de pontuação para filtragem top n (int) \[opcional] número máximo de documentos retornados user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retornos entidade rerankresult speech2text herde a classe base base speech2text model speech2textmodel e implemente as seguintes interfaces invocação def invoke(self, model str, credentials dict, file io\[bytes], user optional\[str] = none) > str """ invocar modelo de linguagem grande \ param model nome do modelo \ param credentials credenciais do modelo \ param file arquivo de áudio \ param user id único do usuário \ return texto correspondente ao arquivo de áudio """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key file (file) fluxo do arquivo user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retorno string após a conversão de fala para texto text2speech herde a classe base base text2speech model text2speechmodel e implemente as seguintes interfaces invocação def invoke(self, model str, credentials dict, content text str, streaming bool, user optional\[str] = none) """ invocar modelo de linguagem grande \ param model nome do modelo \ param credentials credenciais do modelo \ param content text texto a ser traduzido \ param streaming se a saída será em streaming \ param user id único do usuário \ return arquivo de áudio traduzido """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key content text (string) texto a ser convertido streaming (bool) se a saída será em streaming user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retorno fluxo de fala convertido a partir de texto moderação herde a classe base base moderation model moderationmodel e implemente as seguintes interfaces invocação def invoke(self, model str, credentials dict, text str, user optional\[str] = none) > bool """ invocar modelo de linguagem grande \ param model nome do modelo \ param credentials credenciais do modelo \ param text texto a ser moderado \ param user id único do usuário \ return false se o texto for seguro, true caso contrário """ parâmetros model (string) nome do modelo credentials (objeto) informações de credenciais os parâmetros das informações de credenciais são definidos pelo provider credential schema ou model credential schema no arquivo de configuração yaml do provedor incluem entradas como api key text (string) conteúdo do texto user (string) \[opcional] identificador único do usuário isso pode ajudar o provedor a monitorar e detectar comportamento abusivo retorno false indica que o texto é seguro, true indica o contrário entidades promptmessagerole função da mensagem class promptmessagerole(enum) """ enum class para a função da mensagem no prompt """ system = "system" user = "user" assistant = "assistant" tool = "tool" promptmessagecontenttype tipos de conteúdo da mensagem, divididos em texto e imagem class promptmessagecontenttype(enum) """ enum class para o tipo de conteúdo da mensagem no prompt """ text = 'text' image = 'image' promptmessagecontent classe base de conteúdo da mensagem, usada apenas para declaração de parâmetros e não pode ser inicializada class promptmessagecontent(basemodel) """ model class para o conteúdo da mensagem no prompt """ type promptmessagecontenttype data str atualmente, dois tipos são suportados texto e imagem é possível inserir simultaneamente texto e várias imagens você precisa inicializar textpromptmessagecontent e imagepromptmessagecontent separadamente para inserção textpromptmessagecontent class textpromptmessagecontent(promptmessagecontent) """ model class para o conteúdo de texto da mensagem no prompt """ type promptmessagecontenttype = promptmessagecontenttype text se inserir uma combinação de texto e imagens, o texto precisa ser construído nesta entidade como parte da lista de conteúdo imagepromptmessagecontent class imagepromptmessagecontent(promptmessagecontent) """ model class para o conteúdo de imagem da mensagem no prompt """ class detail(enum) low = 'low' high = 'high' type promptmessagecontenttype = promptmessagecontenttype image detail detail = detail low # resolução se inserir uma combinação de texto e imagens, as imagens precisam ser construídas nesta entidade como parte da lista de conteúdo os dados podem ser uma url ou uma string codificada em base64 da imagem promptmessage classe base para todos os corpos de mensagem de função, usada apenas para declaração de parâmetros e não pode ser inicializada class promptmessage(abc, basemodel) """ model class para a mensagem no prompt """ role promptmessagerole content optional\[str | list\[promptmessagecontent]] = none # suporta dois tipos string e lista de conteúdo a lista de conteúdo é projetada para atender às necessidades de entradas multimodais para mais detalhes, consulte a explicação de promptmessagecontent name optional\[str] = none userpromptmessage corpo da mensagem do usuário, representando uma mensagem do usuário class userpromptmessage(promptmessage) """ model class para a mensagem do usuário no prompt """ role promptmessagerole = promptmessagerole user assistantpromptmessage representa uma mensagem retornada pelo modelo, normalmente usada para few shots ou entrada de histórico de chat class assistantpromptmessage(promptmessage) """ model class para a mensagem do assistente no prompt """ class toolcall(basemodel) """ model class para a chamada de ferramenta na mensagem do assistente """ class toolcallfunction(basemodel) """ model class para a função de chamada de ferramenta na mensagem do assistente """ name str # nome da ferramenta arguments str # argumentos da ferramenta id str # id da ferramenta, eficaz apenas em chamadas de ferramentas openai é o id exclusivo para invocação da ferramenta e a mesma ferramenta pode ser chamada várias vezes type str # padrão função function toolcallfunction # informações da chamada de ferramenta role promptmessagerole = promptmessagerole assistant tool calls list\[toolcall] = \[] # o resultado da invocação de ferramentas na resposta do modelo (retornado apenas quando as ferramentas são inseridas e o modelo considera necessário invocar uma ferramenta) onde tool calls é a lista de chamadas de ferramentas retornadas pelo modelo após a invocação do modelo com as ferramentas inseridas systempromptmessage representa mensagens do sistema, geralmente usadas para configurar comandos do sistema dados ao modelo class systempromptmessage(promptmessage) """ model class para a mensagem do sistema no prompt """ role promptmessagerole = promptmessagerole system toolpromptmessage representa mensagens de ferramentas, usadas para transmitir os resultados de uma execução de ferramenta ao modelo para o próximo passo do processamento class toolpromptmessage(promptmessage) """ model class para a mensagem de ferramenta no prompt """ role promptmessagerole = promptmessagerole tool tool call id str # id de invocação da ferramenta se a chamada de ferramenta openai não for suportada, o nome da ferramenta também pode ser inserido o conteúdo da classe base recebe os resultados da execução da ferramenta promptmessagetool class promptmessagetool(basemodel) """ model class para a ferramenta da mensagem no prompt """ name str description str parameters dict llmresult class llmresult(basemodel) """ model class para o resultado de llm """ model str # modelo realmente utilizado prompt messages list\[promptmessage] # mensagens do prompt message assistantpromptmessage # mensagem de resposta usage llmusage # informações de uso system fingerprint optional\[str] = none # impressão digital da solicitação, consulte a definição da openai llmresultchunkdelta em retornos de streaming, cada iteração contém a entidade delta class llmresultchunkdelta(basemodel) """ model class para o delta de chunk de resultado de llm """ index int message assistantpromptmessage # mensagem de resposta usage optional\[llmusage] = none # informações de uso finish reason optional\[str] = none # motivo da conclusão, apenas o último é retornado llmresultchunk cada entidade de iteração em retornos de streaming class llmresultchunk(basemodel) """ model class para o chunk de resultado de llm """ model str # modelo realmente utilizado prompt messages list\[promptmessage] # mensagens do prompt system fingerprint optional\[str] = none # impressão digital da solicitação, consulte a definição da openai delta llmresultchunkdelta llmusage class llmusage(modelusage) """ model class para uso de llm """ prompt tokens int # tokens usados para o prompt prompt unit price decimal # preço unitário para o prompt prompt price unit decimal # unidade de preço para o prompt, ou seja, o preço unitário com base em quantos tokens prompt price decimal # custo para o prompt completion tokens int # tokens usados para a resposta completion unit price decimal # preço unitário para a resposta completion price unit decimal # unidade de preço para a resposta, ou seja, o preço unitário com base em quantos tokens completion price decimal # custo para a resposta total tokens int # número total de tokens usados total price decimal # custo total currency str # unidade monetária latency float # latência da solicitação (s) textembeddingresult class textembeddingresult(basemodel) """ model class para o resultado de incorporação de texto """ model str # modelo realmente utilizado embeddings list\[list\[float]] # lista de vetores de incorporação, correspondente à lista de textos de entrada usage embeddingusage # informações de uso embeddingusage class embeddingusage(modelusage) """ model class para uso de incorporação """ tokens int # número de tokens usados total tokens int # número total de tokens usados unit price decimal # preço unitário price unit decimal # unidade de preço, ou seja, o preço unitário com base em quantos tokens total price decimal # custo total currency str # unidade monetária latency float # latência da solicitação (s) rerankresult class rerankresult(basemodel) """ model class para o resultado de rerank """ model str # modelo realmente utilizado docs list\[rerankdocument] # lista de documentos rerankeados rerankdocument class rerankdocument(basemodel) """ model class para o documento rerankeado """ index int # índice original text str score float