Partilhar via


Vinculação de entrada da Pesquisa Semântica do Azure OpenAI para o Azure Functions

Importante

A extensão do Azure OpenAI para o Azure Functions está atualmente em visualização.

A associação de entrada de pesquisa semântica do Azure OpenAI permite que você use a pesquisa semântica em suas incorporações.

Para obter informações sobre detalhes de instalação e configuração da extensão do Azure OpenAI, consulte Extensões do Azure OpenAI para Azure Functions. Para saber mais sobre a classificação semântica na Pesquisa de IA do Azure, consulte Classificação semântica na Pesquisa de IA do Azure.

Observação

Referências e exemplos são fornecidos apenas para o modelo Node.js v4.

Observação

Referências e exemplos são fornecidos apenas para o modelo Python v2.

Observação

Embora ambos os modelos de processo C# sejam suportados, apenas exemplos de modelos de trabalho isolados são fornecidos.

Exemplo

Este exemplo mostra como executar uma pesquisa semântica em um arquivo.

[Function("PromptFile")]
public static IActionResult PromptFile(
    [HttpTrigger(AuthorizationLevel.Function, "post")] SemanticSearchRequest unused,
    [SemanticSearchInput("AISearchEndpoint", "openai-index", Query = "{prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] SemanticSearchContext result)
{
    return new ContentResult { Content = result.Response, ContentType = "text/plain" };
}

Este exemplo mostra como executar uma pesquisa semântica em um arquivo.

@FunctionName("PromptFile")
public HttpResponseMessage promptFile(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS)
        HttpRequestMessage<SemanticSearchRequest> request,
    @SemanticSearch(name = "search", searchConnectionName = "AISearchEndpoint", collection = "openai-index", query = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", isReasoningModel = false ) String semanticSearchContext,
    final ExecutionContext context) {
        String response = new JSONObject(semanticSearchContext).getString("Response");
        return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response)
        .build();        
}
public class SemanticSearchRequest {
    public String prompt;
    public String getPrompt() {
        return prompt;
    }
    public void setPrompt(String prompt) {
        this.prompt = prompt;
    }        
}

Este exemplo mostra como executar uma pesquisa semântica em um arquivo.

const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});
const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody: any = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});

Este exemplo mostra como executar uma pesquisa semântica em um arquivo.

Aqui está o arquivofunction.json para solicitar um arquivo:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "SemanticSearchInput",
      "type": "semanticSearch",
      "direction": "in",
      "searchConnectionName": "AISearchEndpoint",
      "collection": "openai-index",
      "query": "{prompt}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Para obter mais informações sobre function.json propriedades do arquivo, consulte a seção Configuração .

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $SemanticSearchInput.Response
    })

Este exemplo mostra como executar uma pesquisa semântica em um arquivo.

@app.function_name("PromptFile")
@app.route(methods=["POST"])
@app.semantic_search_input(
    arg_name="result",
    search_connection_name="AISearchEndpoint",
    collection="openai-index",
    query="{prompt}",
    embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def prompt_file(req: func.HttpRequest, result: str) -> func.HttpResponse:
    result_json = json.loads(result)
    response_json = {
        "content": result_json.get("Response"),
        "content_type": "text/plain",
    }
    return func.HttpResponse(
        json.dumps(response_json), status_code=200, mimetype="application/json"
    )

Atributos

Aplique o SemanticSearchInput atributo para definir uma associação de entrada de pesquisa semântica, que suporta estes parâmetros:

Parâmetro Descrição
SearchConnectionName O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação.
Coleção O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação.
Consulta O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação.
IncorporaçõesModelo Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação.
Modelo de Bate-papo Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação.
AIConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
Prompt do sistema Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação.
MaxKnowledgeCount Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt.
IsReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Anotações

A SemanticSearchInput anotação permite definir uma ligação de entrada de pesquisa semântica, que suporta estes parâmetros:

Elemento Descrição
Nome Obtém ou define o nome da ligação de entrada.
searchConnectionName O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação.
coleção O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação.
consulta O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação.
incorporaçõesModelo Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação.
chatModelo Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
sistemaPrompt Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação.
maxKnowledgeCount Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt.
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Decoradores

Durante a visualização, defina a ligação de entrada como uma generic_input_binding associação do tipo semanticSearch, que suporta estes parâmetros:

Parâmetro Descrição
arg_name O nome da variável que representa o parâmetro de ligação.
search_connection_name O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação.
coleção O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação.
consulta O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação.
embeddings_model Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação.
chat_model Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação.
ai_connection_name Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
system_prompt Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação.
max_knowledge_count Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt.
is_reasoning _model Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Configuração

A associação suporta essas propriedades de configuração definidas no arquivo function.json.

Propriedade Descrição
tipo Deve ser semanticSearch.
direção Deve ser in.
Nome O nome da ligação de entrada.
searchConnectionName Obtém ou define o nome de uma configuração de aplicativo ou variável de ambiente que contém um valor de cadeia de conexão. Esta propriedade suporta expressões de ligação.
coleção O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação.
consulta O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação.
incorporaçõesModelo Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação.
chatModelo Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
sistemaPrompt Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação.
maxKnowledgeCount Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt.
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Configuração

A associação suporta estas propriedades, que são definidas no seu código:

Propriedade Descrição
searchConnectionName O nome de uma configuração de aplicativo ou variável de ambiente que contém o valor da cadeia de conexão. Esta propriedade suporta expressões de ligação.
coleção O nome da coleção, tabela ou índice a pesquisar. Esta propriedade suporta expressões de ligação.
consulta O texto da consulta semântica a ser usado para pesquisar. Esta propriedade suporta expressões de ligação.
incorporaçõesModelo Opcional. A ID do modelo a ser usado para incorporações. O valor predefinido é text-embedding-3-small. Esta propriedade suporta expressões de ligação.
chatModelo Opcional. Obtém ou define o nome do Modelo de Linguagem Grande a ser invocado para respostas de bate-papo. O valor predefinido é gpt-3.5-turbo. Esta propriedade suporta expressões de ligação.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
sistemaPrompt Opcional. Obtém ou define o prompt do sistema a ser usado para solicitar o modelo de linguagem grande. O prompt do sistema é anexado com conhecimento que é obtido como resultado do Query. O prompt combinado é enviado para a API de bate-papo do OpenAI. Esta propriedade suporta expressões de ligação.
maxKnowledgeCount Opcional. Obtém ou define o número de itens de conhecimento a serem injetados no SystemPrompt.
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Utilização

Consulte a seção Exemplo para obter exemplos completos.