Sdílet prostřednictvím


Vstupní vazba sémantického vyhledávání Azure OpenAI pro Azure Functions

Důležité

Rozšíření Azure OpenAI pro Azure Functions je aktuálně ve verzi Preview.

Vstupní vazba sémantického vyhledávání Azure OpenAI umožňuje použít sémantické vyhledávání ve vložených možnostech.

Informace o nastavení a konfiguraci rozšíření Azure OpenAI najdete v tématu Rozšíření Azure OpenAI pro Azure Functions. Další informace o sémantickém řazení ve službě Azure AI Search najdete v tématu Sémantické řazení ve službě Azure AI Search.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Node.js v4.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Pythonu v2.

Poznámka:

I když jsou podporovány oba modely procesu jazyka C#, jsou k dispozici pouze příklady izolovaného modelu pracovního procesu .

Příklad

Tento příklad ukazuje, jak provést sémantické vyhledávání v souboru.

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

Tento příklad ukazuje, jak provést sémantické vyhledávání v souboru.

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

Tento příklad ukazuje, jak provést sémantické vyhledávání v souboru.

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

Tento příklad ukazuje, jak provést sémantické vyhledávání v souboru.

Tady je soubor function.json pro zobrazení výzvy k zadání souboru:

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

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

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

Tento příklad ukazuje, jak provést sémantické vyhledávání v souboru.

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

Atributy

Pomocí atributu SemanticSearchInput definujte sémantickou vstupní vazbu hledání, která podporuje tyto parametry:

Parametr Popis
SearchConnectionName Název nastavení aplikace nebo proměnné prostředí, která obsahuje hodnotu připojovací řetězec. Tato vlastnost podporuje vazbové výrazy.
Kolekce Název kolekce nebo tabulky nebo indexu, který se má prohledávat. Tato vlastnost podporuje vazbové výrazy.
Dotaz Sémantický text dotazu, který se má použít k hledání. Tato vlastnost podporuje vazbové výrazy.
EmbeddingsModel Volitelné. ID modelu, které se má použít pro vkládání Výchozí hodnota je text-embedding-3-small. Tato vlastnost podporuje vazbové výrazy.
ChatModel Volitelné. Získá nebo nastaví název velkého jazykového modelu vyvolat pro odpovědi chatu. Výchozí hodnota je gpt-3.5-turbo. Tato vlastnost podporuje vazbové výrazy.
AIConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
SystemPrompt Volitelné. Získá nebo nastaví výzvu k použití systému pro zobrazení výzvy k zobrazení velkého jazykového modelu. Výzva k systému je připojena se znalostmi, které jsou načteny v důsledku Query. Kombinovaná výzva se odešle do rozhraní API chatu OpenAI. Tato vlastnost podporuje vazbové výrazy.
MaxKnowledgeCount Volitelné. Získá nebo nastaví počet položek znalostí, které se mají vložit do SystemPrompt.
IsReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Anotace

Poznámka SemanticSearchInput umožňuje definovat sémantickou vstupní vazbu hledání, která podporuje tyto parametry:

prvek Popis
název Získá nebo nastaví název vstupní vazby.
searchConnectionName Název nastavení aplikace nebo proměnné prostředí, která obsahuje hodnotu připojovací řetězec. Tato vlastnost podporuje vazbové výrazy.
kolekce Název kolekce nebo tabulky nebo indexu, který se má prohledávat. Tato vlastnost podporuje vazbové výrazy.
dotaz Sémantický text dotazu, který se má použít k hledání. Tato vlastnost podporuje vazbové výrazy.
embeddingsModel Volitelné. ID modelu, které se má použít pro vkládání Výchozí hodnota je text-embedding-3-small. Tato vlastnost podporuje vazbové výrazy.
chatModel Volitelné. Získá nebo nastaví název velkého jazykového modelu vyvolat pro odpovědi chatu. Výchozí hodnota je gpt-3.5-turbo. Tato vlastnost podporuje vazbové výrazy.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
systemPrompt Volitelné. Získá nebo nastaví výzvu k použití systému pro zobrazení výzvy k zobrazení velkého jazykového modelu. Výzva k systému je připojena se znalostmi, které jsou načteny v důsledku Query. Kombinovaná výzva se odešle do rozhraní API chatu OpenAI. Tato vlastnost podporuje vazbové výrazy.
maxKnowledgeCount Volitelné. Získá nebo nastaví počet položek znalostí, které se mají vložit do SystemPrompt.
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Dekoratéry

Během náhledu definujte vstupní vazbu jako generic_input_binding vazbu typu semanticSearch, která podporuje tyto parametry:

Parametr Popis
arg_name Název proměnné, která představuje parametr vazby.
search_connection_name Název nastavení aplikace nebo proměnné prostředí, která obsahuje hodnotu připojovací řetězec. Tato vlastnost podporuje vazbové výrazy.
kolekce Název kolekce nebo tabulky nebo indexu, který se má prohledávat. Tato vlastnost podporuje vazbové výrazy.
dotaz Sémantický text dotazu, který se má použít k hledání. Tato vlastnost podporuje vazbové výrazy.
embeddings_model Volitelné. ID modelu, které se má použít pro vkládání Výchozí hodnota je text-embedding-3-small. Tato vlastnost podporuje vazbové výrazy.
chat_model Volitelné. Získá nebo nastaví název velkého jazykového modelu vyvolat pro odpovědi chatu. Výchozí hodnota je gpt-3.5-turbo. Tato vlastnost podporuje vazbové výrazy.
ai_connection_name Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
system_prompt Volitelné. Získá nebo nastaví výzvu k použití systému pro zobrazení výzvy k zobrazení velkého jazykového modelu. Výzva k systému je připojena se znalostmi, které jsou načteny v důsledku Query. Kombinovaná výzva se odešle do rozhraní API chatu OpenAI. Tato vlastnost podporuje vazbové výrazy.
max_knowledge_count Volitelné. Získá nebo nastaví počet položek znalostí, které se mají vložit do SystemPrompt.
is_reasoning _model Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Konfigurace

Vazba podporuje tyto vlastnosti konfigurace, které jste nastavili v souboru function.json.

Vlastnictví Popis
typ Musí být semanticSearch.
směr Musí být in.
název Název vstupní vazby.
searchConnectionName Získá nebo nastaví název nastavení aplikace nebo proměnné prostředí, která obsahuje hodnotu připojovacího řetězce. Tato vlastnost podporuje vazbové výrazy.
kolekce Název kolekce nebo tabulky nebo indexu, který se má prohledávat. Tato vlastnost podporuje vazbové výrazy.
dotaz Sémantický text dotazu, který se má použít k hledání. Tato vlastnost podporuje vazbové výrazy.
embeddingsModel Volitelné. ID modelu, které se má použít pro vkládání Výchozí hodnota je text-embedding-3-small. Tato vlastnost podporuje vazbové výrazy.
chatModel Volitelné. Získá nebo nastaví název velkého jazykového modelu vyvolat pro odpovědi chatu. Výchozí hodnota je gpt-3.5-turbo. Tato vlastnost podporuje vazbové výrazy.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
systemPrompt Volitelné. Získá nebo nastaví výzvu k použití systému pro zobrazení výzvy k zobrazení velkého jazykového modelu. Výzva k systému je připojena se znalostmi, které jsou načteny v důsledku Query. Kombinovaná výzva se odešle do rozhraní API chatu OpenAI. Tato vlastnost podporuje vazbové výrazy.
maxKnowledgeCount Volitelné. Získá nebo nastaví počet položek znalostí, které se mají vložit do SystemPrompt.
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Konfigurace

Vazba podporuje tyto vlastnosti, které jsou definovány v kódu:

Vlastnictví Popis
searchConnectionName Název nastavení aplikace nebo proměnné prostředí, která obsahuje hodnotu připojovací řetězec. Tato vlastnost podporuje vazbové výrazy.
kolekce Název kolekce nebo tabulky nebo indexu, který se má prohledávat. Tato vlastnost podporuje vazbové výrazy.
dotaz Sémantický text dotazu, který se má použít k hledání. Tato vlastnost podporuje vazbové výrazy.
embeddingsModel Volitelné. ID modelu, které se má použít pro vkládání Výchozí hodnota je text-embedding-3-small. Tato vlastnost podporuje vazbové výrazy.
chatModel Volitelné. Získá nebo nastaví název velkého jazykového modelu vyvolat pro odpovědi chatu. Výchozí hodnota je gpt-3.5-turbo. Tato vlastnost podporuje vazbové výrazy.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
systemPrompt Volitelné. Získá nebo nastaví výzvu k použití systému pro zobrazení výzvy k zobrazení velkého jazykového modelu. Výzva k systému je připojena se znalostmi, které jsou načteny v důsledku Query. Kombinovaná výzva se odešle do rozhraní API chatu OpenAI. Tato vlastnost podporuje vazbové výrazy.
maxKnowledgeCount Volitelné. Získá nebo nastaví počet položek znalostí, které se mají vložit do SystemPrompt.
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Použití

Kompletní příklady najdete v části Příklad.