Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
Az Azure Functions Azure OpenAI bővítménye jelenleg előzetes verzióban érhető el.
Az Azure OpenAI beágyazási tár kimeneti kötése lehetővé teszi, hogy fájlokat írjon egy szemantikai dokumentumtárba, amely egy szemantikai keresés későbbi részében hivatkozható.
Az Azure OpenAI-bővítmény beállítási és konfigurációs részleteiről további információt az Azure Functions Azure OpenAI-bővítményeivel kapcsolatban talál. Az Azure AI Search szemantikai rangsorolásával kapcsolatos további információkért lásd az Azure AI Search szemantikai rangsorolását.
Feljegyzés
A referenciák és példák csak a Node.js v4-modellhez vannak megadva.
Feljegyzés
A hivatkozások és példák csak a Python v2-modellhez vannak megadva.
Feljegyzés
Bár mindkét C#-folyamatmodell támogatott, csak izolált feldolgozómodell-példák állnak rendelkezésre.
Példa
Ez a példa egy HTTP-bemeneti streamet ír egy szemantikai dokumentumtárba a megadott URL-címen.
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)
};
}
Ez a példa egy HTTP-bemeneti streamet ír egy szemantikai dokumentumtárba a megadott URL-címen.
@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;
}
}
Ez a példa egy HTTP-bemeneti streamet ír egy szemantikai dokumentumtárba a megadott URL-címen.
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 }
}
});
Ez a példa egy HTTP-bemeneti streamet ír egy szemantikai dokumentumtárba a megadott URL-címen.
A fájlok betöltéséhez a következő function.json fájl található:
{
"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%"
}
]
}
A function.json fájltulajdonságokról a Konfiguráció szakaszban talál további információt.
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"
}
})
Ez a példa egy HTTP-bemeneti streamet ír egy szemantikai dokumentumtárba a megadott URL-címen.
@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"
)
Attribútumok
Alkalmazza az EmbeddingsStoreOutput attribútumot egy beágyazási tár kimeneti kötésének definiálására, amely támogatja az alábbi paramétereket:
| Paraméter | Leírás |
|---|---|
| Input (Bemenet) | A bemeneti sztring, amelyhez beágyazást szeretne létrehozni. |
| AIConnectionName | Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót. |
| EmbeddingsModel |
Választható. A használni kívánt modell azonosítója, amely alapértelmezés szerint a következő.text-embedding-ada-002 Meglévő adatbázis modelljét nem szabad módosítani. További információ: Használat. |
| MaxChunkLength | Választható. A bemenet darabolásához használt karakterek maximális száma. További információ: Használat. |
| MaxOverlap | Választható. Lekéri vagy beállítja a karakterek maximális számát, hogy átfedésben legyenek az adattömbök között. |
| InputType | Választható. Lekéri a bemenet típusát. |
| StoreConnectionName | A kapcsolati sztring értéket tartalmazó alkalmazásbeállítás vagy környezeti változó neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
| Gyűjtemény | A keresendő gyűjtemény vagy tábla vagy index neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
Jegyzetek
A EmbeddingsStoreOutput széljegyzet lehetővé teszi, hogy definiáljon egy beágyazási tár kimeneti kötését, amely támogatja az alábbi paramétereket:
| Elem | Leírás |
|---|---|
| név | Lekéri vagy beállítja a kimeneti kötés nevét. |
| Bemenet | A bemeneti sztring, amelyhez beágyazást szeretne létrehozni. |
| aiConnectionName | Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót. |
| embeddingsModel |
Választható. A használni kívánt modell azonosítója, amely alapértelmezés szerint a következő.text-embedding-ada-002 Meglévő adatbázis modelljét nem szabad módosítani. További információ: Használat. |
| maxChunkLength | Választható. A bemenet darabolásához használt karakterek maximális száma. További információ: Használat. |
| maxOverlap | Választható. Lekéri vagy beállítja a karakterek maximális számát, hogy átfedésben legyenek az adattömbök között. |
| inputType | Választható. Lekéri a bemenet típusát. |
| storeConnectionName | A kapcsolati sztring értéket tartalmazó alkalmazásbeállítás vagy környezeti változó neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
| gyűjtemény | A keresendő gyűjtemény vagy tábla vagy index neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
Dekorátorok
Az előzetes verzióban adja meg a kimeneti kötést típuskötésként generic_output_bindingsemanticSearch, amely támogatja az alábbi paramétereket:
| Paraméter | Leírás |
|---|---|
| arg_name | A kötési paramétert képviselő változó neve. |
| Bemenet | A bemeneti sztring, amelyhez beágyazást szeretne létrehozni. |
| ai_connection_name | Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót. |
| embeddings_model |
Választható. A használni kívánt modell azonosítója, amely alapértelmezés szerint a következő.text-embedding-ada-002 Meglévő adatbázis modelljét nem szabad módosítani. További információ: Használat. |
| maxChunkLength | Választható. A bemenet darabolásához használt karakterek maximális száma. További információ: Használat. |
| max_overlap | Választható. Lekéri vagy beállítja a karakterek maximális számát, hogy átfedésben legyenek az adattömbök között. |
| input_type | Lekéri a bemenet típusát. |
| store_connection_name | A kapcsolati sztring értéket tartalmazó alkalmazásbeállítás vagy környezeti változó neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
| gyűjtemény | A keresendő gyűjtemény vagy tábla vagy index neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
Konfiguráció
A kötés támogatja a function.json fájlban beállított konfigurációs tulajdonságokat.
| Tulajdonság | Leírás |
|---|---|
| típus | Kell lennie embeddingsStore. |
| irány | Kell lennie out. |
| név | A kimeneti kötés neve. |
| Bemenet | A bemeneti sztring, amelyhez beágyazást szeretne létrehozni. |
| aiConnectionName | Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót. |
| embeddingsModel |
Választható. A használni kívánt modell azonosítója, amely alapértelmezés szerint a következő.text-embedding-ada-002 Meglévő adatbázis modelljét nem szabad módosítani. További információ: Használat. |
| maxChunkLength | Választható. A bemenet darabolásához használt karakterek maximális száma. További információ: Használat. |
| maxOverlap | Választható. Lekéri vagy beállítja a karakterek maximális számát, hogy átfedésben legyenek az adattömbök között. |
| inputType | Választható. Lekéri a bemenet típusát. |
| storeConnectionName | A kapcsolati sztring értéket tartalmazó alkalmazásbeállítás vagy környezeti változó neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
| gyűjtemény | A keresendő gyűjtemény vagy tábla vagy index neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
Konfiguráció
A kötés támogatja ezeket a tulajdonságokat, amelyek a kódban vannak definiálva:
| Tulajdonság | Leírás |
|---|---|
| Bemenet | A bemeneti sztring, amelyhez beágyazást szeretne létrehozni. |
| aiConnectionName | Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót. |
| embeddingsModel |
Választható. A használni kívánt modell azonosítója, amely alapértelmezés szerint a következő.text-embedding-ada-002 Meglévő adatbázis modelljét nem szabad módosítani. További információ: Használat. |
| maxChunkLength | Választható. A bemenet darabolásához használt karakterek maximális száma. További információ: Használat. |
| maxOverlap | Választható. Lekéri vagy beállítja a karakterek maximális számát, hogy átfedésben legyenek az adattömbök között. |
| inputType | Választható. Lekéri a bemenet típusát. |
| storeConnectionName | A kapcsolati sztring értéket tartalmazó alkalmazásbeállítás vagy környezeti változó neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
| gyűjtemény | A keresendő gyűjtemény vagy tábla vagy index neve. Ez a tulajdonság támogatja a kötési kifejezéseket. |
Használat
A teljes példákért tekintse meg a Példa szakaszt .