Condividi tramite


Associazione di input di ricerca semantica OpenAI di Azure per Funzioni di Azure

Importante

L'estensione OpenAI di Azure per Funzioni di Azure è attualmente in anteprima.

L'associazione di input di ricerca semantica OpenAI di Azure consente di usare la ricerca semantica negli incorporamenti.

Per informazioni sull'installazione e la configurazione dell'estensione OpenAI di Azure, vedere Estensioni OpenAI di Azure per Funzioni di Azure. Per altre informazioni sulla classificazione semantica in Ricerca di intelligenza artificiale di Azure, vedere Classificazione semantica in Ricerca di intelligenza artificiale di Azure.

Annotazioni

I riferimenti e gli esempi vengono forniti solo per il modello Node.js v4.

Annotazioni

I riferimenti e gli esempi vengono forniti solo per il modello Python v2.

Annotazioni

Anche se sono supportati entrambi i modelli di processo C#, vengono forniti solo esempi di modelli di lavoro isolati.

Esempio

In questo esempio viene illustrato come eseguire una ricerca semantica in un file.

[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" };
}

In questo esempio viene illustrato come eseguire una ricerca semantica in un file.

@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;
    }        
}

In questo esempio viene illustrato come eseguire una ricerca semantica in un file.

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() }
    }
});

In questo esempio viene illustrato come eseguire una ricerca semantica in un file.

Ecco il filefunction.json per richiedere un file:

{
  "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%"
    }
  ]
}

Per altre informazioni sulle proprietà dei file function.json, vedere la sezione configurazione.

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

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

In questo esempio viene illustrato come eseguire una ricerca semantica in un file.

@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"
    )

Attributi

Applicare l'attributo per definire un'associazione SemanticSearchInput di input di ricerca semantica, che supporta questi parametri:

Parametro Descrizione
SearchConnectionName Nome di un'impostazione dell'app o di una variabile di ambiente che contiene il valore della stringa di connessione. Questa proprietà supporta le espressioni di associazione.
Raccolta Nome della raccolta, della tabella o dell'indice da cercare. Questa proprietà supporta le espressioni di associazione.
Quesito Testo della query semantica da usare per la ricerca. Questa proprietà supporta le espressioni di associazione.
EmbeddingsModel Facoltativo. ID del modello da usare per gli incorporamenti. Il valore predefinito è text-embedding-3-small. Questa proprietà supporta le espressioni di associazione.
ChatModel Facoltativo. Ottiene o imposta il nome del modello linguistico Large da richiamare per le risposte di chat. Il valore predefinito è gpt-3.5-turbo. Questa proprietà supporta le espressioni di associazione.
AIConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
SystemPrompt Facoltativo. Ottiene o imposta il prompt di sistema da utilizzare per richiedere il modello linguistico di grandi dimensioni. Il prompt di sistema viene aggiunto con le informazioni recuperate in seguito a Query. Il prompt combinato viene inviato all'API Chat OpenAI. Questa proprietà supporta le espressioni di associazione.
MaxKnowledgeCount Facoltativo. Ottiene o imposta il numero di elementi di knowledge base da inserire nell'oggetto SystemPrompt.
IsReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Annotazioni

L'annotazione SemanticSearchInput consente di definire un'associazione di input di ricerca semantica, che supporta questi parametri:

Elemento Descrizione
nome Ottiene o imposta il nome del binding di input.
searchConnectionName Nome di un'impostazione dell'app o di una variabile di ambiente che contiene il valore della stringa di connessione. Questa proprietà supporta le espressioni di associazione.
raccolta Nome della raccolta, della tabella o dell'indice da cercare. Questa proprietà supporta le espressioni di associazione.
quesito Testo della query semantica da usare per la ricerca. Questa proprietà supporta le espressioni di associazione.
embeddingsModel Facoltativo. ID del modello da usare per gli incorporamenti. Il valore predefinito è text-embedding-3-small. Questa proprietà supporta le espressioni di associazione.
chatModel Facoltativo. Ottiene o imposta il nome del modello linguistico Large da richiamare per le risposte di chat. Il valore predefinito è gpt-3.5-turbo. Questa proprietà supporta le espressioni di associazione.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
systemPrompt Facoltativo. Ottiene o imposta il prompt di sistema da utilizzare per richiedere il modello linguistico di grandi dimensioni. Il prompt di sistema viene aggiunto con le informazioni recuperate in seguito a Query. Il prompt combinato viene inviato all'API Chat OpenAI. Questa proprietà supporta le espressioni di associazione.
maxKnowledgeCount Facoltativo. Ottiene o imposta il numero di elementi di knowledge base da inserire nell'oggetto SystemPrompt.
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Elementi Decorator

Durante l'anteprima, definire l'associazione di input come associazione generic_input_binding di tipo semanticSearch, che supporta questi parametri:

Parametro Descrizione
arg_name Nome della variabile che rappresenta il parametro di associazione.
search_connection_name Nome di un'impostazione dell'app o di una variabile di ambiente che contiene il valore della stringa di connessione. Questa proprietà supporta le espressioni di associazione.
raccolta Nome della raccolta, della tabella o dell'indice da cercare. Questa proprietà supporta le espressioni di associazione.
quesito Testo della query semantica da usare per la ricerca. Questa proprietà supporta le espressioni di associazione.
embeddings_model Facoltativo. ID del modello da usare per gli incorporamenti. Il valore predefinito è text-embedding-3-small. Questa proprietà supporta le espressioni di associazione.
chat_model Facoltativo. Ottiene o imposta il nome del modello linguistico Large da richiamare per le risposte di chat. Il valore predefinito è gpt-3.5-turbo. Questa proprietà supporta le espressioni di associazione.
ai_connection_name Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
system_prompt Facoltativo. Ottiene o imposta il prompt di sistema da utilizzare per richiedere il modello linguistico di grandi dimensioni. Il prompt di sistema viene aggiunto con le informazioni recuperate in seguito a Query. Il prompt combinato viene inviato all'API Chat OpenAI. Questa proprietà supporta le espressioni di associazione.
max_knowledge_count Facoltativo. Ottiene o imposta il numero di elementi di knowledge base da inserire nell'oggetto SystemPrompt.
is_reasoning _model Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Configurazione

L'associazione supporta queste proprietà di configurazione impostate nel file function.json.

Proprietà Descrizione
tipo Deve essere semanticSearch.
direzione Deve essere in.
nome Nome dell'associazione di input.
searchConnectionName Ottiene o imposta il nome di un'impostazione dell'app o di una variabile di ambiente che contiene un valore della stringa di connessione. Questa proprietà supporta le espressioni di associazione.
raccolta Nome della raccolta, della tabella o dell'indice da cercare. Questa proprietà supporta le espressioni di associazione.
quesito Testo della query semantica da usare per la ricerca. Questa proprietà supporta le espressioni di associazione.
embeddingsModel Facoltativo. ID del modello da usare per gli incorporamenti. Il valore predefinito è text-embedding-3-small. Questa proprietà supporta le espressioni di associazione.
chatModel Facoltativo. Ottiene o imposta il nome del modello linguistico Large da richiamare per le risposte di chat. Il valore predefinito è gpt-3.5-turbo. Questa proprietà supporta le espressioni di associazione.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
systemPrompt Facoltativo. Ottiene o imposta il prompt di sistema da utilizzare per richiedere il modello linguistico di grandi dimensioni. Il prompt di sistema viene aggiunto con le informazioni recuperate in seguito a Query. Il prompt combinato viene inviato all'API Chat OpenAI. Questa proprietà supporta le espressioni di associazione.
maxKnowledgeCount Facoltativo. Ottiene o imposta il numero di elementi di knowledge base da inserire nell'oggetto SystemPrompt.
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Configurazione

Il binding supporta queste proprietà, definite nel codice:

Proprietà Descrizione
searchConnectionName Nome di un'impostazione dell'app o di una variabile di ambiente che contiene il valore della stringa di connessione. Questa proprietà supporta le espressioni di associazione.
raccolta Nome della raccolta, della tabella o dell'indice da cercare. Questa proprietà supporta le espressioni di associazione.
quesito Testo della query semantica da usare per la ricerca. Questa proprietà supporta le espressioni di associazione.
embeddingsModel Facoltativo. ID del modello da usare per gli incorporamenti. Il valore predefinito è text-embedding-3-small. Questa proprietà supporta le espressioni di associazione.
chatModel Facoltativo. Ottiene o imposta il nome del modello linguistico Large da richiamare per le risposte di chat. Il valore predefinito è gpt-3.5-turbo. Questa proprietà supporta le espressioni di associazione.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
systemPrompt Facoltativo. Ottiene o imposta il prompt di sistema da utilizzare per richiedere il modello linguistico di grandi dimensioni. Il prompt di sistema viene aggiunto con le informazioni recuperate in seguito a Query. Il prompt combinato viene inviato all'API Chat OpenAI. Questa proprietà supporta le espressioni di associazione.
maxKnowledgeCount Facoltativo. Ottiene o imposta il numero di elementi di knowledge base da inserire nell'oggetto SystemPrompt.
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Uso

Per esempi completi, vedere la sezione di esempio.