Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Rozszerzenie Azure OpenAI dla usługi Azure Functions jest obecnie dostępne w wersji zapoznawczej.
Osadzanie usługi Azure OpenAI przechowuje powiązanie wyjściowe umożliwia zapisywanie plików w semantycznym magazynie dokumentów, do którego można się odwoływać w dalszej części wyszukiwania semantycznego.
Aby uzyskać informacje na temat konfigurowania i konfigurowania rozszerzenia Azure OpenAI, zobacz Azure OpenAI extensions for Azure Functions (Rozszerzenia azure OpenAI dla usługi Azure Functions). Aby dowiedzieć się więcej na temat klasyfikacji semantycznej w usłudze Azure AI Search, zobacz Semantic ranking in Azure AI Search (Ranking semantyczny w usłudze Azure AI Search).
Uwaga
Odwołania i przykłady są udostępniane tylko dla modelu Node.js w wersji 4.
Uwaga
Odwołania i przykłady są udostępniane tylko dla modelu języka Python w wersji 2.
Uwaga
Chociaż oba modele procesów języka C# są obsługiwane, udostępniane są tylko izolowane przykłady modeli procesów roboczych.
Przykład
W tym przykładzie strumień wejściowy HTTP jest zapisywany w magazynie dokumentów semantycznych pod podanym adresem URL.
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)
};
}
W tym przykładzie strumień wejściowy HTTP jest zapisywany w magazynie dokumentów semantycznych pod podanym adresem URL.
@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;
}
}
W tym przykładzie strumień wejściowy HTTP jest zapisywany w magazynie dokumentów semantycznych pod podanym adresem URL.
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 }
}
});
W tym przykładzie strumień wejściowy HTTP jest zapisywany w magazynie dokumentów semantycznych pod podanym adresem URL.
Oto plik function.json do pozyskiwania plików:
{
"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%"
}
]
}
Aby uzyskać więcej informacji na temat function.json właściwości pliku, zobacz sekcję Konfiguracja.
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"
}
})
W tym przykładzie strumień wejściowy HTTP jest zapisywany w magazynie dokumentów semantycznych pod podanym adresem URL.
@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"
)
Atrybuty
Zastosuj atrybut, EmbeddingsStoreOutput aby zdefiniować powiązanie wyjściowe magazynu osadzania, które obsługuje następujące parametry:
| Parametr | Opis |
|---|---|
| Dane wejściowe | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| AIConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| EmbeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| MaxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| MaxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| InputType | Opcjonalne. Pobiera typ danych wejściowych. |
| StoreConnectionName | Nazwa ustawienia aplikacji lub zmiennej środowiskowej zawierającej wartość parametry połączenia. Ta właściwość obsługuje wyrażenia powiązań. |
| Kolekcja | Nazwa kolekcji lub tabeli lub indeksu do wyszukania. Ta właściwość obsługuje wyrażenia powiązań. |
Adnotacje
Adnotacja EmbeddingsStoreOutput umożliwia zdefiniowanie powiązania wyjściowego magazynu osadzania, które obsługuje następujące parametry:
| Składnik | Opis |
|---|---|
| nazwa | Pobiera lub ustawia nazwę powiązania wyjściowego. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType | Opcjonalne. Pobiera typ danych wejściowych. |
| storeConnectionName | Nazwa ustawienia aplikacji lub zmiennej środowiskowej zawierającej wartość parametry połączenia. Ta właściwość obsługuje wyrażenia powiązań. |
| kolekcja | Nazwa kolekcji lub tabeli lub indeksu do wyszukania. Ta właściwość obsługuje wyrażenia powiązań. |
Dekoratory
W wersji zapoznawczej zdefiniuj powiązanie wyjściowe jako generic_output_binding powiązanie typu semanticSearch, które obsługuje następujące parametry:
| Parametr | Opis |
|---|---|
| arg_name | Nazwa zmiennej reprezentującej parametr powiązania. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| ai_connection_name | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddings_model |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| max_overlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| input_type | Pobiera typ danych wejściowych. |
| store_connection_name | Nazwa ustawienia aplikacji lub zmiennej środowiskowej zawierającej wartość parametry połączenia. Ta właściwość obsługuje wyrażenia powiązań. |
| kolekcja | Nazwa kolekcji lub tabeli lub indeksu do wyszukania. Ta właściwość obsługuje wyrażenia powiązań. |
Konfigurowanie
Powiązanie obsługuje te właściwości konfiguracji ustawione w pliku function.json.
| Właściwości | Opis |
|---|---|
| typ | Musi mieć wartość embeddingsStore. |
| kierunek | Musi mieć wartość out. |
| nazwa | Nazwa powiązania wyjściowego. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType | Opcjonalne. Pobiera typ danych wejściowych. |
| storeConnectionName | Nazwa ustawienia aplikacji lub zmiennej środowiskowej zawierającej wartość parametry połączenia. Ta właściwość obsługuje wyrażenia powiązań. |
| kolekcja | Nazwa kolekcji lub tabeli lub indeksu do wyszukania. Ta właściwość obsługuje wyrażenia powiązań. |
Konfigurowanie
Powiązanie obsługuje te właściwości zdefiniowane w kodzie:
| Właściwości | Opis |
|---|---|
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType | Opcjonalne. Pobiera typ danych wejściowych. |
| storeConnectionName | Nazwa ustawienia aplikacji lub zmiennej środowiskowej zawierającej wartość parametry połączenia. Ta właściwość obsługuje wyrażenia powiązań. |
| kolekcja | Nazwa kolekcji lub tabeli lub indeksu do wyszukania. Ta właściwość obsługuje wyrażenia powiązań. |
Użycie
Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.