Defina um provedor para um modelo de incorporação

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 3 min. de leitura
  • Determine qual provedor de IA usar para que seu modelo de incorporação possa funcionar no Pesquisa com IA Geração aumentada por recuperação( RAG).

    Antes de Iniciar

    Configure um alias de conexão e credencial para seu provedor preferencial. Para obter mais informações, consulte Create a Connection & Credential alias.

    Função necessária: administrador

    Procedimento

    1. Navegar até Tudoe, em seguida, insira sys_one_extend_capability.list No filtro para ir para a tabela Capacidades do OneExtend.
    2. Selecione Traga seu próprio modelo de incorporação capacidade.
    3. Na lista relacionada Definições de capacidade do OneExtend, selecione Novo .
    4. Em Nome , insira o nome da definição de capacidade.
      Por exemplo, Geração de incorporação ( Azure OpenAI)
    5. Em Tipo de API campo, selecione sistema .
    6. Em API , selecione o ícone de pesquisa ( Pesquisar documentos usando a lista.para selecionar o documento.
      1. Em Nome da tabela , Selecione a tabela One API System Executor [one_api_system_executor].
      2. Em Documento campo, selecione Embedder genérico .
      3. Selecione OK.
    7. Em Alias de conexão e credencial , selecione o alias que você deseja integrar ao seu modelo de incorporação personalizado.
    8. Selecione Avançado opção.
    9. Crie scripts de pré-processamento e pós-processamento.
      Para habilitar seu Pesquisa com IA RAG para funcionar perfeitamente com seu modelo de incorporação, você deve criar scripts de pré-processamento e pós-processamento. Esses scripts ajudam o. Pesquisa com IA RAG entenda o formato dos dados que seu modelo espera e produz.
      O exemplo a seguir mostra o script de pré-processador do Azure OpenAI estrutura de solicitação.
      (function(inputs) {                                                               //// inputs is the capability inputs which contains request.
                  /* write code here to transform capability input to definition input.            
                   *{
      		"request": {                                                                  //request contains rawInput which will be system-provided.
      			"rawInput": {                                                          //rawInput contains passages(Array of text segments), type(Context of the input) and modelId(Name of the embedding model)
      				"passages": ["Sample text"],
      				"type": "ingest/query",
      				"model": "text-embedding-3-large"
      			},
      			"providerInput": {                                                     //providerInput should be populated using the relevant data from rawInput.passages.
      				"input": ["Sample text"]                                        //The field name "input" inside providerInput is provider-specific and rawInput.passages should be mapped to the appropriate field expected by your provider
      			}
      		}
      	  }
      	 try {
              var parsedInputs = JSON.parse(inputs);
              var request = parsedInputs.request;
              var rawInput = request.rawInput;
              var passagesArray = rawInput.passages;
              var type = rawInput.type;
      
              if (passagesArray && passagesArray.length > 0) {
                  parsedInputs.request.providerInput = {};
                  parsedInputs.request.providerInput.input = passagesArray;
              }
      
          } catch (ex) {
              gs.error("Exception occured while preprocessing of the inputs." + ex);
              throw new Error("Exception occured while OE preprocessing of the inputs : " + ex);
          }
      
          inputs = parsedInputs;
          return inputs;
      })(inputs);
      	 
      O exemplo a seguir mostra o script de pós-processador de resposta para Azure OpenAI estrutura de solicitação.
      (function(outputs) {
          /* write code here to transform definition output to capability output.
      	* outputs contains result from the provider definition implementation.
      	* Expected outputs format from provider definition implementation in success scenario:
      	   "result": {
      			"provider": "custom_embedding_model",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"status": "success",
      			"response": {"object":"list","data":[{"object":"embedding","index":0,"embedding":[0.008695375,0.0011188902]},{"object":"embedding","index":1,"embedding":[0.012572239,0.017366657]}],"model":"text-embedding-3-large","usage":{"prompt_tokens":4,"total_tokens":4}}
      	    }
      	* Expected outputs format from provider definition implementation in error scenario:
      	   "result": {
      			"responseHeaders": "[Content-Length: 224\r\n, Content-Type: application/json\r\n, apim-request-id: 72b1519e-a367-4f01-b249-8f37d35d50d3\r\n, Date: Thu, 01 May 2025 12:03:44 GMT\r\n]",
      			"responseBody": "{\"error\":{\"code\":\"401\",\"message\":\"Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.\"}}",
      			"provider": "custom_embedding_model",
      			"errorCode": "401",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"error": "PermissionDenied",
      			"status": "error"
      	   }
      	* Extract the embeddings from the response key of the provider result (in a successful scenario) and elevate it in the final output. Sample format for the same:
      	  "result": {
      			"provider": "custom_embedding_model",
      			"logId": "0ee6f4f4ff112210b6e1ffffffffff03",
      			"status": "success",
      			"response": {"object":"list","data":[{"object":"embedding","index":0,"embedding":[0.008695375,0.0011188902]},{"object":"embedding","index":1,"embedding":[0.012572239,0.017366657]}],"model":"text-embedding-3-large","usage":{"prompt_tokens":4,"total_tokens":4}}
      			"embeddings": [[0.008695375,0.0011188902], [0.012572239,0.017366657]]
      	   }
      	*/
          try {
              outputs = JSON.parse(outputs);
              var embeddingsArray = [];
      
              if (!gs.nil(outputs.result) && !gs.nil(outputs.result.response)) {
                  var responseBody = outputs.result.response;
                  if (!gs.nil(responseBody)) {
                      var data = JSON.parse(responseBody).data;
                      for (var i = 0; i < data.length; i++) {
                          var embeddingResponse = data[i];
                          if (!gs.nil(embeddingResponse) && !gs.nil(embeddingResponse.embedding))
                              embeddingsArray.push(embeddingResponse.embedding);
                      }
                  }
      
                  outputs.result.embeddings = embeddingsArray;
              }
          } catch (ex) {
              gs.error("Exception occured while OE postprocessing of the outputs = " + ex);
              outputs.result.status = "error";
              outputs.result.error = gs.getMessage("Exception occured while OE postprocessing of the outputs : " + ex);
          }
      
          return outputs;
      })(outputs);
    10. Selecione Enviar.