Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Die Azure OpenAI-Erweiterung für Azure Functions befindet sich derzeit in der Vorschau.
Die Azure OpenAI-Ausgabebindung zum Speichern von Einbettungen ermöglicht es Ihnen, Dateien in einen semantischen Dokumentenspeicher zu schreiben, der später in einer semantischen Suche referenziert werden kann.
Informationen zu Einrichtungs- und Konfigurationsdetails der Azure OpenAI-Erweiterung finden Sie unter Azure OpenAI-Erweiterungen für Azure Functions. Weitere Informationen zur semantischen Rangfolge in der Azure KI-Suche finden Sie unter Semantische Rangfolge in der Azure KI-Suche.
Hinweis
Referenzen und Beispiele werden nur für das Node.js v4-Modell bereitgestellt.
Hinweis
Referenzen und Beispiele werden nur für das Python v2-Modell bereitgestellt.
Hinweis
Während beide C#-Prozessmodelle unterstützt werden, werden nur Isolierte Arbeitsmodellbeispiele bereitgestellt.
Beispiel
In diesem Beispiel wird ein HTTP-Eingabedatenstrom in einen semantischen Dokumentspeicher unter der angegebenen URL geschrieben.
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)
};
}
In diesem Beispiel wird ein HTTP-Eingabedatenstrom in einen semantischen Dokumentspeicher unter der angegebenen URL geschrieben.
@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;
}
}
In diesem Beispiel wird ein HTTP-Eingabedatenstrom in einen semantischen Dokumentspeicher unter der angegebenen URL geschrieben.
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 }
}
});
In diesem Beispiel wird ein HTTP-Eingabedatenstrom in einen semantischen Dokumentspeicher unter der angegebenen URL geschrieben.
Dies ist die function.json Datei zum Aufnehmen von Dateien:
{
"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%"
}
]
}
Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt 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"
}
})
In diesem Beispiel wird ein HTTP-Eingabedatenstrom in einen semantischen Dokumentspeicher unter der angegebenen URL geschrieben.
@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"
)
Attribute
Wenden Sie das EmbeddingsStoreOutput-Attribut an, um eine Ausgabebindung zum Speichern von Einbettungen zu definieren, die diese Parameter unterstützt:
| Parameter | Beschreibung |
|---|---|
| Eingabe | Die Eingabezeichenfolge, für die Einbettungen generiert werden sollen. |
| AIConnectionName | Optional. Dient zum Abrufen oder Festlegen des Namens des Konfigurationsabschnitts für AI-Dienstkonnektivitätseinstellungen. For Azure OpenAI: If specified, looks for "Endpoint" and "Key" values in this configuration section. Wenn sie nicht angegeben ist oder der Abschnitt nicht vorhanden ist, kehren Sie auf Umgebungsvariablen zurück: AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY. Für die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung ist diese Eigenschaft erforderlich. Legen Sie für openAI-Dienst (nicht azure) die OPENAI_API_KEY Umgebungsvariable fest. |
| EmbeddingsModel |
Optional. Die ID des zu verwendenden Modells, die standardmäßig text-embedding-ada-002 lautet. Sie sollten das Modell für eine vorhandene Datenbank nicht ändern. Weitere Informationen finden Sie unter Verbrauch. |
| MaxChunkLength | Optional. Die maximale Anzahl von Zeichen, die für die Segmentierung der Eingabe verwendet werden. Weitere Informationen finden Sie unter Verbrauch. |
| MaxOverlap | Optional. Ruft die maximale Anzahl von Zeichen ab, die zwischen Blöcken überlappen sollen, oder legt diese fest. |
| InputType | Optional. Ruft den Typ der Eingabe ab. |
| StoreConnectionName | Den Namen einer App-Einstellung oder Umgebungsvariable, die den Wert der Verbindungszeichenfolge enthält. Diese Eigenschaft unterstützt Bindungsausdrücke. |
| Sammlung | Den Name der zu durchsuchenden Sammlung oder Tabelle oder des Indexes. Diese Eigenschaft unterstützt Bindungsausdrücke. |
Anmerkungen
Mit der EmbeddingsStoreOutput Anmerkung können Sie eine Einbettungsspeicher-Ausgabebindung definieren, die diese Parameter unterstützt:
| Element | Beschreibung |
|---|---|
| Name | Ruft den Namen der Ausgabebindung ab oder legt ihn fest. |
| Eingabe | Die Eingabezeichenfolge, für die Einbettungen generiert werden sollen. |
| aiConnectionName | Optional. Dient zum Abrufen oder Festlegen des Namens des Konfigurationsabschnitts für AI-Dienstkonnektivitätseinstellungen. For Azure OpenAI: If specified, looks for "Endpoint" and "Key" values in this configuration section. Wenn sie nicht angegeben ist oder der Abschnitt nicht vorhanden ist, kehren Sie auf Umgebungsvariablen zurück: AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY. Für die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung ist diese Eigenschaft erforderlich. Legen Sie für openAI-Dienst (nicht azure) die OPENAI_API_KEY Umgebungsvariable fest. |
| embeddingsModel |
Optional. Die ID des zu verwendenden Modells, die standardmäßig text-embedding-ada-002 lautet. Sie sollten das Modell für eine vorhandene Datenbank nicht ändern. Weitere Informationen finden Sie unter Verbrauch. |
| maxChunkLength | Optional. Die maximale Anzahl von Zeichen, die für die Segmentierung der Eingabe verwendet werden. Weitere Informationen finden Sie unter Verbrauch. |
| maxOverlap | Optional. Ruft die maximale Anzahl von Zeichen ab, die zwischen Blöcken überlappen sollen, oder legt diese fest. |
| inputType | Optional. Ruft den Typ der Eingabe ab. |
| storeConnectionName | Den Namen einer App-Einstellung oder Umgebungsvariable, die den Wert der Verbindungszeichenfolge enthält. Diese Eigenschaft unterstützt Bindungsausdrücke. |
| Sammlung | Den Name der zu durchsuchenden Sammlung oder Tabelle oder des Indexes. Diese Eigenschaft unterstützt Bindungsausdrücke. |
Decorator-Elemente
Definieren Sie während der Vorschau die Ausgabebindung als Bindung generic_output_binding vom Typ semanticSearch, die diese Parameter unterstützt:
| Parameter | Beschreibung |
|---|---|
| arg_name | Der Name der Variablen, die den Bindungsparameter darstellt. |
| Eingabe | Die Eingabezeichenfolge, für die Einbettungen generiert werden sollen. |
| ai_connection_name | Optional. Dient zum Abrufen oder Festlegen des Namens des Konfigurationsabschnitts für AI-Dienstkonnektivitätseinstellungen. For Azure OpenAI: If specified, looks for "Endpoint" and "Key" values in this configuration section. Wenn sie nicht angegeben ist oder der Abschnitt nicht vorhanden ist, kehren Sie auf Umgebungsvariablen zurück: AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY. Für die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung ist diese Eigenschaft erforderlich. Legen Sie für openAI-Dienst (nicht azure) die OPENAI_API_KEY Umgebungsvariable fest. |
| embeddings_model |
Optional. Die ID des zu verwendenden Modells, die standardmäßig text-embedding-ada-002 lautet. Sie sollten das Modell für eine vorhandene Datenbank nicht ändern. Weitere Informationen finden Sie unter Verbrauch. |
| maxChunkLength | Optional. Die maximale Anzahl von Zeichen, die für die Segmentierung der Eingabe verwendet werden. Weitere Informationen finden Sie unter Verbrauch. |
| max_overlap | Optional. Ruft die maximale Anzahl von Zeichen ab, die zwischen Blöcken überlappen sollen, oder legt diese fest. |
| input_type | Ruft den Typ der Eingabe ab. |
| store_connection_name | Den Namen einer App-Einstellung oder Umgebungsvariable, die den Wert der Verbindungszeichenfolge enthält. Diese Eigenschaft unterstützt Bindungsausdrücke. |
| Sammlung | Den Name der zu durchsuchenden Sammlung oder Tabelle oder des Indexes. Diese Eigenschaft unterstützt Bindungsausdrücke. |
Konfiguration
Die Bindung unterstützt diese Konfigurationseigenschaften, die Sie in der Datei „function.json“ festlegen.
| Eigenschaft | Beschreibung |
|---|---|
| Typ | Muss embeddingsStorelauten. |
| Richtung | Muss outlauten. |
| Name | Der Name der Ausgabebindung. |
| Eingabe | Die Eingabezeichenfolge, für die Einbettungen generiert werden sollen. |
| aiConnectionName | Optional. Dient zum Abrufen oder Festlegen des Namens des Konfigurationsabschnitts für AI-Dienstkonnektivitätseinstellungen. For Azure OpenAI: If specified, looks for "Endpoint" and "Key" values in this configuration section. Wenn sie nicht angegeben ist oder der Abschnitt nicht vorhanden ist, kehren Sie auf Umgebungsvariablen zurück: AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY. Für die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung ist diese Eigenschaft erforderlich. Legen Sie für openAI-Dienst (nicht azure) die OPENAI_API_KEY Umgebungsvariable fest. |
| embeddingsModel |
Optional. Die ID des zu verwendenden Modells, die standardmäßig text-embedding-ada-002 lautet. Sie sollten das Modell für eine vorhandene Datenbank nicht ändern. Weitere Informationen finden Sie unter Verbrauch. |
| maxChunkLength | Optional. Die maximale Anzahl von Zeichen, die für die Segmentierung der Eingabe verwendet werden. Weitere Informationen finden Sie unter Verbrauch. |
| maxOverlap | Optional. Ruft die maximale Anzahl von Zeichen ab, die zwischen Blöcken überlappen sollen, oder legt diese fest. |
| inputType | Optional. Ruft den Typ der Eingabe ab. |
| storeConnectionName | Den Namen einer App-Einstellung oder Umgebungsvariable, die den Wert der Verbindungszeichenfolge enthält. Diese Eigenschaft unterstützt Bindungsausdrücke. |
| Sammlung | Den Name der zu durchsuchenden Sammlung oder Tabelle oder des Indexes. Diese Eigenschaft unterstützt Bindungsausdrücke. |
Konfiguration
Die Bindung unterstützt diese Eigenschaften, die in Ihrem Code definiert sind:
| Eigenschaft | Beschreibung |
|---|---|
| Eingabe | Die Eingabezeichenfolge, für die Einbettungen generiert werden sollen. |
| aiConnectionName | Optional. Dient zum Abrufen oder Festlegen des Namens des Konfigurationsabschnitts für AI-Dienstkonnektivitätseinstellungen. For Azure OpenAI: If specified, looks for "Endpoint" and "Key" values in this configuration section. Wenn sie nicht angegeben ist oder der Abschnitt nicht vorhanden ist, kehren Sie auf Umgebungsvariablen zurück: AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY. Für die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung ist diese Eigenschaft erforderlich. Legen Sie für openAI-Dienst (nicht azure) die OPENAI_API_KEY Umgebungsvariable fest. |
| embeddingsModel |
Optional. Die ID des zu verwendenden Modells, die standardmäßig text-embedding-ada-002 lautet. Sie sollten das Modell für eine vorhandene Datenbank nicht ändern. Weitere Informationen finden Sie unter Verbrauch. |
| maxChunkLength | Optional. Die maximale Anzahl von Zeichen, die für die Segmentierung der Eingabe verwendet werden. Weitere Informationen finden Sie unter Verbrauch. |
| maxOverlap | Optional. Ruft die maximale Anzahl von Zeichen ab, die zwischen Blöcken überlappen sollen, oder legt diese fest. |
| inputType | Optional. Ruft den Typ der Eingabe ab. |
| storeConnectionName | Den Namen einer App-Einstellung oder Umgebungsvariable, die den Wert der Verbindungszeichenfolge enthält. Diese Eigenschaft unterstützt Bindungsausdrücke. |
| Sammlung | Den Name der zu durchsuchenden Sammlung oder Tabelle oder des Indexes. Diese Eigenschaft unterstützt Bindungsausdrücke. |
Verbrauch
Vollständige Beispiele finden Sie im Abschnitt Beispiele.