Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Azure OpenAI-tillägget för Azure Functions är för närvarande i förhandsversion.
Med Azure OpenAI-inbäddningsarkivets utdatabindning kan du skriva filer till ett semantiskt dokumentarkiv som kan refereras senare i en semantisk sökning.
Information om konfiguration och konfigurationsinformation för Azure OpenAI-tillägget finns i Azure OpenAI-tillägg för Azure Functions. Mer information om semantisk rankning i Azure AI Search finns i Semantisk rankning i Azure AI Search.
Kommentar
Referenser och exempel tillhandahålls endast för modellen Node.js v4.
Kommentar
Referenser och exempel tillhandahålls endast för Python v2-modellen.
Kommentar
Båda C#-processmodellerna stöds, men endast exempel på isolerade arbetsmodeller tillhandahålls.
Exempel
Det här exemplet skriver en HTTP-indataström till ett semantiskt dokumentarkiv på den angivna URL:en.
public class EmbeddingsRequest
{
[JsonPropertyName("url")]
public string? Url { get; set; }
}
[Function("IngestFile")]
public static async Task<EmbeddingsStoreOutputResponse> IngestFile(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
{
using StreamReader reader = new(req.Body);
string request = await reader.ReadToEndAsync();
EmbeddingsStoreOutputResponse badRequestResponse = new()
{
HttpResponse = new BadRequestResult(),
SearchableDocument = new SearchableDocument(string.Empty)
};
if (string.IsNullOrWhiteSpace(request))
{
return badRequestResponse;
}
EmbeddingsRequest? requestBody = JsonSerializer.Deserialize<EmbeddingsRequest>(request);
if (string.IsNullOrWhiteSpace(requestBody?.Url))
{
throw new ArgumentException("Invalid request body. Make sure that you pass in {\"url\": value } as the request body.");
}
if (!Uri.TryCreate(requestBody.Url, UriKind.Absolute, out Uri? uri))
{
return badRequestResponse;
}
string filename = Path.GetFileName(uri.AbsolutePath);
return new EmbeddingsStoreOutputResponse
{
HttpResponse = new OkObjectResult(new { status = HttpStatusCode.OK }),
SearchableDocument = new SearchableDocument(filename)
};
}
Det här exemplet skriver en HTTP-indataström till ett semantiskt dokumentarkiv på den angivna URL:en.
@FunctionName("IngestFile")
public HttpResponseMessage ingestFile(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<EmbeddingsRequest> request,
@EmbeddingsStoreOutput(name="EmbeddingsStoreOutput", input = "{url}", inputType = InputType.Url,
storeConnectionName = "AISearchEndpoint", collection = "openai-index",
embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%") OutputBinding<EmbeddingsStoreOutputResponse> output,
final ExecutionContext context) throws URISyntaxException {
if (request.getBody() == null || request.getBody().getUrl() == null)
{
throw new IllegalArgumentException("Invalid request body. Make sure that you pass in {\"url\": value } as the request body.");
}
URI uri = new URI(request.getBody().getUrl());
String filename = Paths.get(uri.getPath()).getFileName().toString();
EmbeddingsStoreOutputResponse embeddingsStoreOutputResponse = new EmbeddingsStoreOutputResponse(new SearchableDocument(filename));
output.setValue(embeddingsStoreOutputResponse);
JSONObject response = new JSONObject();
response.put("status", "success");
response.put("title", filename);
return request.createResponseBuilder(HttpStatus.CREATED)
.header("Content-Type", "application/json")
.body(response)
.build();
}
public class EmbeddingsStoreOutputResponse {
private SearchableDocument searchableDocument;
public EmbeddingsStoreOutputResponse(SearchableDocument searchableDocument) {
this.searchableDocument = searchableDocument;
}
public SearchableDocument getSearchableDocument() {
return searchableDocument;
}
}
Det här exemplet skriver en HTTP-indataström till ett semantiskt dokumentarkiv på den angivna URL:en.
const embeddingsStoreOutput = output.generic({
type: "embeddingsStore",
input: "{url}",
inputType: "url",
connectionName: "AISearchEndpoint",
collection: "openai-index",
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});
app.http('IngestFile', {
methods: ['POST'],
authLevel: 'function',
extraOutputs: [embeddingsStoreOutput],
handler: async (request, context) => {
let requestBody = await request.json();
if (!requestBody || !requestBody.url) {
throw new Error("Invalid request body. Make sure that you pass in {\"url\": value } as the request body.");
}
let uri = requestBody.url;
let url = new URL(uri);
let fileName = path.basename(url.pathname);
context.extraOutputs.set(embeddingsStoreOutput, { title: fileName });
let response = {
status: "success",
title: fileName
};
return { status: 202, jsonBody: response }
}
});
interface EmbeddingsRequest {
url?: string;
}
const embeddingsStoreOutput = output.generic({
type: "embeddingsStore",
input: "{url}",
inputType: "url",
connectionName: "AISearchEndpoint",
collection: "openai-index",
embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});
app.http('IngestFile', {
methods: ['POST'],
authLevel: 'function',
extraOutputs: [embeddingsStoreOutput],
handler: async (request, context) => {
let requestBody: EmbeddingsRequest | null = await request.json();
if (!requestBody || !requestBody.url) {
throw new Error("Invalid request body. Make sure that you pass in {\"url\": value } as the request body.");
}
let uri = requestBody.url;
let url = new URL(uri);
let fileName = path.basename(url.pathname);
context.extraOutputs.set(embeddingsStoreOutput, { title: fileName });
let response = {
status: "success",
title: fileName
};
return { status: 202, jsonBody: response }
}
});
Det här exemplet skriver en HTTP-indataström till ett semantiskt dokumentarkiv på den angivna URL:en.
Här är function.json-filen för inmatning av filer:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "EmbeddingsStoreOutput",
"type": "embeddingsStore",
"direction": "out",
"input": "{url}",
"inputType": "Url",
"storeConnectionName": "AISearchEndpoint",
"collection": "openai-index",
"embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
}
]
}
Mer information om function.json filegenskaper finns i avsnittet Konfiguration .
using namespace System.Net
param($Request, $TriggerMetadata)
$ErrorActionPreference = 'Stop'
$inputJson = $Request.Body
if (-not $inputJson -or -not $inputJson.Url) {
throw 'Invalid request body. Make sure that you pass in {\"url\": value } as the request body.'
}
$uri = [URI]$inputJson.Url
$filename = [System.IO.Path]::GetFileName($uri.AbsolutePath)
Push-OutputBinding -Name EmbeddingsStoreOutput -Value @{
"title" = $filename
}
$response = @{
"status" = "success"
"title" = $filename
}
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $response
Headers = @{
"Content-Type" = "application/json"
}
})
Det här exemplet skriver en HTTP-indataström till ett semantiskt dokumentarkiv på den angivna URL:en.
@app.function_name("IngestFile")
@app.route(methods=["POST"])
@app.embeddings_store_output(
arg_name="requests",
input="{url}",
input_type="url",
store_connection_name="AISearchEndpoint",
collection="openai-index",
embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
)
def ingest_file(
req: func.HttpRequest, requests: func.Out[str]
) -> func.HttpResponse:
user_message = req.get_json()
if not user_message:
return func.HttpResponse(
json.dumps({"message": "No message provided"}),
status_code=400,
mimetype="application/json",
)
file_name_with_extension = os.path.basename(user_message["url"])
title = os.path.splitext(file_name_with_extension)[0]
create_request = {"title": title}
requests.set(json.dumps(create_request))
response_json = {"status": "success", "title": title}
return func.HttpResponse(
json.dumps(response_json), status_code=200, mimetype="application/json"
)
Attribut
EmbeddingsStoreOutput Använd attributet för att definiera en inbäddningslagerutdatabindning, som stöder följande parametrar:
| Parameter | Beskrivning |
|---|---|
| Indata | Den indatasträng som du vill generera inbäddningar för. |
| AIConnectionName | Valfritt. Hämtar eller anger namnet på konfigurationsavsnittet för anslutningsinställningar för AI-tjänsten. För Azure OpenAI: Om det anges söker du efter värdena "Slutpunkt" och "Nyckel" i det här konfigurationsavsnittet. Om det inte anges eller om avsnittet inte finns återgår du till miljövariabler: AZURE_OPENAI_ENDPOINT och AZURE_OPENAI_KEY. För användartilldelad hanterad identitetsautentisering krävs den här egenskapen. För OpenAI-tjänsten (icke-Azure) anger du miljövariabeln OPENAI_API_KEY. |
| EmbeddingsModel |
Valfritt. ID:t för modellen som ska användas, som standard är text-embedding-ada-002. Du bör inte ändra modellen för en befintlig databas. Mer information finns i Användning. |
| MaxChunkLength | Valfritt. Det maximala antalet tecken som används för segmentering av indata. Mer information finns i Användning. |
| MaxOverlap | Valfritt. Hämtar eller anger det maximala antalet tecken som ska överlappa mellan segment. |
| InputType | Valfritt. Hämtar indatatypen. |
| StoreConnectionName | Namnet på en appinställning eller miljövariabel som innehåller värdet anslutningssträng. Den här egenskapen stöder bindningsuttryck. |
| Samling | Namnet på samlingen eller tabellen eller indexet som ska sökas. Den här egenskapen stöder bindningsuttryck. |
Kommentarer
Med anteckningen EmbeddingsStoreOutput kan du definiera en inbäddningslagerutdatabindning som stöder följande parametrar:
| Komponent | Beskrivning |
|---|---|
| Namn | Hämtar eller anger namnet på utdatabindningen. |
| inmatning | Den indatasträng som du vill generera inbäddningar för. |
| aiConnectionName | Valfritt. Hämtar eller anger namnet på konfigurationsavsnittet för anslutningsinställningar för AI-tjänsten. För Azure OpenAI: Om det anges söker du efter värdena "Slutpunkt" och "Nyckel" i det här konfigurationsavsnittet. Om det inte anges eller om avsnittet inte finns återgår du till miljövariabler: AZURE_OPENAI_ENDPOINT och AZURE_OPENAI_KEY. För användartilldelad hanterad identitetsautentisering krävs den här egenskapen. För OpenAI-tjänsten (icke-Azure) anger du miljövariabeln OPENAI_API_KEY. |
| embeddingsModel |
Valfritt. ID:t för modellen som ska användas, som standard är text-embedding-ada-002. Du bör inte ändra modellen för en befintlig databas. Mer information finns i Användning. |
| maxChunkLength | Valfritt. Det maximala antalet tecken som används för segmentering av indata. Mer information finns i Användning. |
| maxOverlap | Valfritt. Hämtar eller anger det maximala antalet tecken som ska överlappa mellan segment. |
| inputType | Valfritt. Hämtar indatatypen. |
| storeConnectionName | Namnet på en appinställning eller miljövariabel som innehåller värdet anslutningssträng. Den här egenskapen stöder bindningsuttryck. |
| samling | Namnet på samlingen eller tabellen eller indexet som ska sökas. Den här egenskapen stöder bindningsuttryck. |
Dekoratörer
Under förhandsversionen definierar du utdatabindningen som en generic_output_binding bindning av typen semanticSearch, som stöder följande parametrar:
| Parameter | Beskrivning |
|---|---|
| arg_name | Namnet på variabeln som representerar bindningsparametern. |
| inmatning | Den indatasträng som du vill generera inbäddningar för. |
| ai_connection_name | Valfritt. Hämtar eller anger namnet på konfigurationsavsnittet för anslutningsinställningar för AI-tjänsten. För Azure OpenAI: Om det anges söker du efter värdena "Slutpunkt" och "Nyckel" i det här konfigurationsavsnittet. Om det inte anges eller om avsnittet inte finns återgår du till miljövariabler: AZURE_OPENAI_ENDPOINT och AZURE_OPENAI_KEY. För användartilldelad hanterad identitetsautentisering krävs den här egenskapen. För OpenAI-tjänsten (icke-Azure) anger du miljövariabeln OPENAI_API_KEY. |
| embeddings_model |
Valfritt. ID:t för modellen som ska användas, som standard är text-embedding-ada-002. Du bör inte ändra modellen för en befintlig databas. Mer information finns i Användning. |
| maxChunkLength | Valfritt. Det maximala antalet tecken som används för segmentering av indata. Mer information finns i Användning. |
| max_overlap | Valfritt. Hämtar eller anger det maximala antalet tecken som ska överlappa mellan segment. |
| input_type | Hämtar indatatypen. |
| store_connection_name | Namnet på en appinställning eller miljövariabel som innehåller värdet anslutningssträng. Den här egenskapen stöder bindningsuttryck. |
| samling | Namnet på samlingen eller tabellen eller indexet som ska sökas. Den här egenskapen stöder bindningsuttryck. |
Konfiguration
Bindningen stöder de konfigurationsegenskaper som du anger i filen function.json.
| Fastighet | Beskrivning |
|---|---|
| typ | Måste vara embeddingsStore. |
| riktning | Måste vara out. |
| Namn | Namnet på utdatabindningen. |
| inmatning | Den indatasträng som du vill generera inbäddningar för. |
| aiConnectionName | Valfritt. Hämtar eller anger namnet på konfigurationsavsnittet för anslutningsinställningar för AI-tjänsten. För Azure OpenAI: Om det anges söker du efter värdena "Slutpunkt" och "Nyckel" i det här konfigurationsavsnittet. Om det inte anges eller om avsnittet inte finns återgår du till miljövariabler: AZURE_OPENAI_ENDPOINT och AZURE_OPENAI_KEY. För användartilldelad hanterad identitetsautentisering krävs den här egenskapen. För OpenAI-tjänsten (icke-Azure) anger du miljövariabeln OPENAI_API_KEY. |
| embeddingsModel |
Valfritt. ID:t för modellen som ska användas, som standard är text-embedding-ada-002. Du bör inte ändra modellen för en befintlig databas. Mer information finns i Användning. |
| maxChunkLength | Valfritt. Det maximala antalet tecken som används för segmentering av indata. Mer information finns i Användning. |
| maxOverlap | Valfritt. Hämtar eller anger det maximala antalet tecken som ska överlappa mellan segment. |
| inputType | Valfritt. Hämtar indatatypen. |
| storeConnectionName | Namnet på en appinställning eller miljövariabel som innehåller värdet anslutningssträng. Den här egenskapen stöder bindningsuttryck. |
| samling | Namnet på samlingen eller tabellen eller indexet som ska sökas. Den här egenskapen stöder bindningsuttryck. |
Konfiguration
Bindningen stöder dessa egenskaper, som definieras i koden:
| Fastighet | Beskrivning |
|---|---|
| inmatning | Den indatasträng som du vill generera inbäddningar för. |
| aiConnectionName | Valfritt. Hämtar eller anger namnet på konfigurationsavsnittet för anslutningsinställningar för AI-tjänsten. För Azure OpenAI: Om det anges söker du efter värdena "Slutpunkt" och "Nyckel" i det här konfigurationsavsnittet. Om det inte anges eller om avsnittet inte finns återgår du till miljövariabler: AZURE_OPENAI_ENDPOINT och AZURE_OPENAI_KEY. För användartilldelad hanterad identitetsautentisering krävs den här egenskapen. För OpenAI-tjänsten (icke-Azure) anger du miljövariabeln OPENAI_API_KEY. |
| embeddingsModel |
Valfritt. ID:t för modellen som ska användas, som standard är text-embedding-ada-002. Du bör inte ändra modellen för en befintlig databas. Mer information finns i Användning. |
| maxChunkLength | Valfritt. Det maximala antalet tecken som används för segmentering av indata. Mer information finns i Användning. |
| maxOverlap | Valfritt. Hämtar eller anger det maximala antalet tecken som ska överlappa mellan segment. |
| inputType | Valfritt. Hämtar indatatypen. |
| storeConnectionName | Namnet på en appinställning eller miljövariabel som innehåller värdet anslutningssträng. Den här egenskapen stöder bindningsuttryck. |
| samling | Namnet på samlingen eller tabellen eller indexet som ska sökas. Den här egenskapen stöder bindningsuttryck. |
Förbrukning
Se avsnittet Exempel för fullständiga exempel.