Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Azure İşlevleri için Azure OpenAI uzantısı şu anda önizleme aşamasındadır.
Azure OpenAI ekleme deposu çıkış bağlaması, daha sonra anlamsal aramada başvurulabilecek bir anlamsal belge deposuna dosya yazmanızı sağlar.
Azure OpenAI uzantısının kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. Azure İşlevleri için Azure OpenAI uzantıları. Azure AI Search'teki anlam derecelendirmesi hakkında daha fazla bilgi edinmek için bkz . Azure AI Search'te anlam derecelendirmesi.
Not
Başvurular ve örnekler yalnızca Node.js v4 modeli için sağlanır.
Not
Başvurular ve örnekler yalnızca Python v2 modeli için sağlanır.
Not
Her iki C# işlem modeli de destekleniyor olsa da yalnızca yalıtılmış çalışan modeli örnekleri sağlanır.
Örnek
Bu örnek, sağlanan URL'deki anlamsal belge deposuna bir HTTP giriş akışı yazar.
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)
};
}
Bu örnek, sağlanan URL'deki anlamsal belge deposuna bir HTTP giriş akışı yazar.
@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;
}
}
Bu örnek, sağlanan URL'deki anlamsal belge deposuna bir HTTP giriş akışı yazar.
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 }
}
});
Bu örnek, sağlanan URL'deki anlamsal belge deposuna bir HTTP giriş akışı yazar.
Dosyaları almak için function.json dosyası aşağıdadır:
{
"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%"
}
]
}
function.json dosya özellikleri hakkında daha fazla bilgi için Yapılandırma bölümüne bakın.
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"
}
})
Bu örnek, sağlanan URL'deki anlamsal belge deposuna bir HTTP giriş akışı yazar.
@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"
)
Özellikler
EmbeddingsStoreOutput Şu parametreleri destekleyen bir embeddings deposu çıkış bağlaması tanımlamak için özniteliğini uygulayın:
| Parametre | Açıklama |
|---|---|
| Girdi | Eklemelerin oluşturulacağı giriş dizesi. |
| AIConnectionName | İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın. |
| EmbeddingsModel |
İsteğe bağlı. Kullanılacak modelin kimliğidir ve varsayılan olarak olarak text-embedding-ada-002kullanılır. Mevcut bir veritabanının modelini değiştirmemelisiniz. Daha fazla bilgi için bkz . Kullanım. |
| MaxChunkLength | İsteğe bağlı. Girişi öbekleme için kullanılan en fazla karakter sayısı. Daha fazla bilgi için bkz . Kullanım. |
| MaxOverlap | İsteğe bağlı. Öbekler arasında üst üste binecek en fazla karakter sayısını alır veya ayarlar. |
| InputType | İsteğe bağlı. Girişin türünü alır. |
| StoreConnectionName | bağlantı dizesi değerini içeren bir uygulama ayarının veya ortam değişkeninin adı. Bu özellik bağlama ifadelerini destekler. |
| Koleksiyon | Aranacak koleksiyonun, tablonun veya dizinin adı. Bu özellik bağlama ifadelerini destekler. |
Ek Açıklamalar
Ek EmbeddingsStoreOutput açıklama, şu parametreleri destekleyen bir ekleme deposu çıkış bağlaması tanımlamanızı sağlar:
| Öğe | Açıklama |
|---|---|
| ad | Çıkış bağlamasının adını alır veya ayarlar. |
| girdi | Eklemelerin oluşturulacağı giriş dizesi. |
| aiConnectionName | İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın. |
| embeddingsModel |
İsteğe bağlı. Kullanılacak modelin kimliğidir ve varsayılan olarak olarak text-embedding-ada-002kullanılır. Mevcut bir veritabanının modelini değiştirmemelisiniz. Daha fazla bilgi için bkz . Kullanım. |
| maxChunkLength | İsteğe bağlı. Girişi öbekleme için kullanılan en fazla karakter sayısı. Daha fazla bilgi için bkz . Kullanım. |
| maxOverlap | İsteğe bağlı. Öbekler arasında üst üste binecek en fazla karakter sayısını alır veya ayarlar. |
| inputType | İsteğe bağlı. Girişin türünü alır. |
| storeConnectionName | bağlantı dizesi değerini içeren bir uygulama ayarının veya ortam değişkeninin adı. Bu özellik bağlama ifadelerini destekler. |
| koleksiyon | Aranacak koleksiyonun, tablonun veya dizinin adı. Bu özellik bağlama ifadelerini destekler. |
Dekoratörler
Önizleme sırasında çıkış bağlamasını, şu parametreleri destekleyen türünde generic_output_bindingbir semanticSearch bağlama olarak tanımlayın:
| Parametre | Açıklama |
|---|---|
| arg_name | Bağlama parametresini temsil eden değişkenin adı. |
| girdi | Eklemelerin oluşturulacağı giriş dizesi. |
| ai_connection_name | İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın. |
| embeddings_model |
İsteğe bağlı. Kullanılacak modelin kimliğidir ve varsayılan olarak olarak text-embedding-ada-002kullanılır. Mevcut bir veritabanının modelini değiştirmemelisiniz. Daha fazla bilgi için bkz . Kullanım. |
| maxChunkLength | İsteğe bağlı. Girişi öbekleme için kullanılan en fazla karakter sayısı. Daha fazla bilgi için bkz . Kullanım. |
| max_overlap | İsteğe bağlı. Öbekler arasında üst üste binecek en fazla karakter sayısını alır veya ayarlar. |
| input_type | Girişin türünü alır. |
| store_connection_name | bağlantı dizesi değerini içeren bir uygulama ayarının veya ortam değişkeninin adı. Bu özellik bağlama ifadelerini destekler. |
| koleksiyon | Aranacak koleksiyonun, tablonun veya dizinin adı. Bu özellik bağlama ifadelerini destekler. |
Yapılandırma
Bağlama, function.json dosyasında ayarladığınız bu yapılandırma özelliklerini destekler.
| Özellik | Açıklama |
|---|---|
| türü | olmalıdır embeddingsStore. |
| yön | olmalıdır out. |
| ad | Çıkış bağlamasının adı. |
| girdi | Eklemelerin oluşturulacağı giriş dizesi. |
| aiConnectionName | İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın. |
| embeddingsModel |
İsteğe bağlı. Kullanılacak modelin kimliğidir ve varsayılan olarak olarak text-embedding-ada-002kullanılır. Mevcut bir veritabanının modelini değiştirmemelisiniz. Daha fazla bilgi için bkz . Kullanım. |
| maxChunkLength | İsteğe bağlı. Girişi öbekleme için kullanılan en fazla karakter sayısı. Daha fazla bilgi için bkz . Kullanım. |
| maxOverlap | İsteğe bağlı. Öbekler arasında üst üste binecek en fazla karakter sayısını alır veya ayarlar. |
| inputType | İsteğe bağlı. Girişin türünü alır. |
| storeConnectionName | bağlantı dizesi değerini içeren bir uygulama ayarının veya ortam değişkeninin adı. Bu özellik bağlama ifadelerini destekler. |
| koleksiyon | Aranacak koleksiyonun, tablonun veya dizinin adı. Bu özellik bağlama ifadelerini destekler. |
Yapılandırma
Bağlama, kodunuzda tanımlanan şu özellikleri destekler:
| Özellik | Açıklama |
|---|---|
| girdi | Eklemelerin oluşturulacağı giriş dizesi. |
| aiConnectionName | İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın. |
| embeddingsModel |
İsteğe bağlı. Kullanılacak modelin kimliğidir ve varsayılan olarak olarak text-embedding-ada-002kullanılır. Mevcut bir veritabanının modelini değiştirmemelisiniz. Daha fazla bilgi için bkz . Kullanım. |
| maxChunkLength | İsteğe bağlı. Girişi öbekleme için kullanılan en fazla karakter sayısı. Daha fazla bilgi için bkz . Kullanım. |
| maxOverlap | İsteğe bağlı. Öbekler arasında üst üste binecek en fazla karakter sayısını alır veya ayarlar. |
| inputType | İsteğe bağlı. Girişin türünü alır. |
| storeConnectionName | bağlantı dizesi değerini içeren bir uygulama ayarının veya ortam değişkeninin adı. Bu özellik bağlama ifadelerini destekler. |
| koleksiyon | Aranacak koleksiyonun, tablonun veya dizinin adı. Bu özellik bağlama ifadelerini destekler. |
Kullanım
Tam örnekler için Örnek bölümüne bakın.