Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.
Pengikatan output penyimpanan Azure OpenAI memungkinkan Anda menulis file ke penyimpanan dokumen semantik yang dapat direferensikan nanti dalam pencarian semantik.
Untuk informasi tentang penyiapan dan detail konfigurasi ekstensi Azure OpenAI, lihat Ekstensi Azure OpenAI untuk Azure Functions. Untuk mempelajari selengkapnya tentang peringkat semantik di Azure AI Search, lihat Peringkat semantik di Azure AI Search.
Catatan
Referensi dan contoh hanya disediakan untuk model Node.js v4.
Catatan
Referensi dan contoh hanya disediakan untuk model Python v2.
Catatan
Meskipun kedua model proses C# didukung, hanya contoh model pekerja terisolasi yang disediakan.
Contoh
Contoh ini menulis aliran input HTTP ke penyimpanan dokumen semantik di URL yang disediakan.
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)
};
}
Contoh ini menulis aliran input HTTP ke penyimpanan dokumen semantik di URL yang disediakan.
@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;
}
}
Contoh ini menulis aliran input HTTP ke penyimpanan dokumen semantik di URL yang disediakan.
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 }
}
});
Contoh ini menulis aliran input HTTP ke penyimpanan dokumen semantik di URL yang disediakan.
Berikut adalah file function.json untuk menyerap file:
{
"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%"
}
]
}
Untuk informasi selengkapnya tentang properti file function.json , lihat bagian Konfigurasi .
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"
}
})
Contoh ini menulis aliran input HTTP ke penyimpanan dokumen semantik di URL yang disediakan.
@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"
)
Atribut
EmbeddingsStoreOutput Terapkan atribut untuk menentukan pengikatan output penyimpanan penyematan, yang mendukung parameter ini:
| Pengaturan | Deskripsi |
|---|---|
| Masukan | String input yang akan menghasilkan penyematan. |
| AIConnectionName | Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY. |
| EmbeddingsModel |
Opsional. ID model yang akan digunakan, yang default ke text-embedding-ada-002. Anda tidak boleh mengubah model untuk database yang sudah ada. Untuk informasi selengkapnya, lihat Penggunaan. |
| MaxChunkLength | Opsional. Jumlah maksimum karakter yang digunakan untuk memotong input. Untuk informasi selengkapnya, lihat Penggunaan. |
| MaxOverlap | Opsional. Mendapatkan atau mengatur jumlah karakter maksimum untuk tumpang tindih di antara gugus. |
| InputType | Opsional. Mendapatkan jenis input. |
| StoreConnectionName | Nama pengaturan aplikasi atau variabel lingkungan yang berisi nilai string koneksi. Properti ini mendukung ekspresi pengikatan. |
| Koleksi | Nama koleksi atau tabel atau indeks yang akan dicari. Properti ini mendukung ekspresi pengikatan. |
Anotasi
Anotasi EmbeddingsStoreOutput memungkinkan Anda menentukan pengikatan output penyimpanan penyematan, yang mendukung parameter ini:
| Elemen | Deskripsi |
|---|---|
| nama | Mendapatkan atau mengatur nama pengikatan output. |
| masukan | String input yang akan menghasilkan penyematan. |
| aiConnectionName | Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY. |
| embeddingsModel |
Opsional. ID model yang akan digunakan, yang default ke text-embedding-ada-002. Anda tidak boleh mengubah model untuk database yang sudah ada. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxChunkLength | Opsional. Jumlah maksimum karakter yang digunakan untuk memotong input. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxOverlap | Opsional. Mendapatkan atau mengatur jumlah karakter maksimum untuk tumpang tindih di antara gugus. |
| inputType | Opsional. Mendapatkan jenis input. |
| storeConnectionName | Nama pengaturan aplikasi atau variabel lingkungan yang berisi nilai string koneksi. Properti ini mendukung ekspresi pengikatan. |
| koleksi | Nama koleksi atau tabel atau indeks yang akan dicari. Properti ini mendukung ekspresi pengikatan. |
Dekorator
Selama pratinjau, tentukan pengikatan output sebagai generic_output_binding pengikatan jenis semanticSearch, yang mendukung parameter ini:
| Pengaturan | Deskripsi |
|---|---|
| arg_name | Nama variabel yang mewakili parameter pengikatan. |
| masukan | String input yang akan menghasilkan penyematan. |
| ai_connection_name | Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY. |
| embeddings_model |
Opsional. ID model yang akan digunakan, yang default ke text-embedding-ada-002. Anda tidak boleh mengubah model untuk database yang sudah ada. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxChunkLength | Opsional. Jumlah maksimum karakter yang digunakan untuk memotong input. Untuk informasi selengkapnya, lihat Penggunaan. |
| max_overlap | Opsional. Mendapatkan atau mengatur jumlah karakter maksimum untuk tumpang tindih di antara gugus. |
| input_type | Mendapatkan jenis input. |
| store_connection_name | Nama pengaturan aplikasi atau variabel lingkungan yang berisi nilai string koneksi. Properti ini mendukung ekspresi pengikatan. |
| koleksi | Nama koleksi atau tabel atau indeks yang akan dicari. Properti ini mendukung ekspresi pengikatan. |
Konfigurasi
Pengikatan mendukung properti konfigurasi ini yang Anda tetapkan dalam file function.json.
| Properti | Deskripsi |
|---|---|
| jenis | Harus berupa embeddingsStore . |
| arah | Harus berupa out . |
| nama | Nama pengikatan output. |
| masukan | String input yang akan menghasilkan penyematan. |
| aiConnectionName | Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY. |
| embeddingsModel |
Opsional. ID model yang akan digunakan, yang default ke text-embedding-ada-002. Anda tidak boleh mengubah model untuk database yang sudah ada. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxChunkLength | Opsional. Jumlah maksimum karakter yang digunakan untuk memotong input. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxOverlap | Opsional. Mendapatkan atau mengatur jumlah karakter maksimum untuk tumpang tindih di antara gugus. |
| inputType | Opsional. Mendapatkan jenis input. |
| storeConnectionName | Nama pengaturan aplikasi atau variabel lingkungan yang berisi nilai string koneksi. Properti ini mendukung ekspresi pengikatan. |
| koleksi | Nama koleksi atau tabel atau indeks yang akan dicari. Properti ini mendukung ekspresi pengikatan. |
Konfigurasi
Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:
| Properti | Deskripsi |
|---|---|
| masukan | String input yang akan menghasilkan penyematan. |
| aiConnectionName | Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY. |
| embeddingsModel |
Opsional. ID model yang akan digunakan, yang default ke text-embedding-ada-002. Anda tidak boleh mengubah model untuk database yang sudah ada. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxChunkLength | Opsional. Jumlah maksimum karakter yang digunakan untuk memotong input. Untuk informasi selengkapnya, lihat Penggunaan. |
| maxOverlap | Opsional. Mendapatkan atau mengatur jumlah karakter maksimum untuk tumpang tindih di antara gugus. |
| inputType | Opsional. Mendapatkan jenis input. |
| storeConnectionName | Nama pengaturan aplikasi atau variabel lingkungan yang berisi nilai string koneksi. Properti ini mendukung ekspresi pengikatan. |
| koleksi | Nama koleksi atau tabel atau indeks yang akan dicari. Properti ini mendukung ekspresi pengikatan. |
Penggunaan
Lihat Bagian contoh untuk contoh lengkapnya.