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 eklemeleri giriş bağlaması, girişler için eklemeler oluşturmanıza olanak tanır. Bağlama, dosyalardan veya ham metin girişlerinden eklemeler oluşturabilir.
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 OpenAI Hizmeti'nde eklemeler hakkında daha fazla bilgi edinmek için bkz . Azure OpenAI Hizmeti'nde eklemeleri anlama.
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 örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
internal class EmbeddingsRequest
{
[JsonPropertyName("rawText")]
public string? RawText { get; set; }
[JsonPropertyName("filePath")]
public string? FilePath { get; set; }
[JsonPropertyName("url")]
public string? Url { get; set; }
}
/// <summary>
/// Example showing how to use the <see cref="EmbeddingsAttribute"/> input binding to generate embeddings
/// for a raw text string.
/// </summary>
[Function(nameof(GenerateEmbeddings_Http_RequestAsync))]
public async Task GenerateEmbeddings_Http_RequestAsync(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "embeddings")] HttpRequestData req,
[EmbeddingsInput("{rawText}", InputType.RawText, EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] EmbeddingsContext embeddings)
{
using StreamReader reader = new(req.Body);
string request = await reader.ReadToEndAsync();
EmbeddingsRequest? requestBody = JsonSerializer.Deserialize<EmbeddingsRequest>(request);
this.logger.LogInformation(
"Received {count} embedding(s) for input text containing {length} characters.",
embeddings.Count,
requestBody?.RawText?.Length);
// TODO: Store the embeddings into a database or other storage.
}
Bu örnek, işlevin erişebildiği belirtilen bir dosyada depolanan eklemelerin nasıl alındığını gösterir.
[Function(nameof(GetEmbeddings_Http_FilePath))]
public async Task GetEmbeddings_Http_FilePath(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "embeddings-from-file")] HttpRequestData req,
[EmbeddingsInput("{filePath}", InputType.FilePath, MaxChunkLength = 512, EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] EmbeddingsContext embeddings)
{
using StreamReader reader = new(req.Body);
string request = await reader.ReadToEndAsync();
EmbeddingsRequest? requestBody = JsonSerializer.Deserialize<EmbeddingsRequest>(request);
this.logger.LogInformation(
"Received {count} embedding(s) for input file '{path}'.",
embeddings.Count,
requestBody?.FilePath);
// TODO: Store the embeddings into a database or other storage.
}
Bu örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
@FunctionName("GenerateEmbeddingsHttpRequest")
public HttpResponseMessage generateEmbeddingsHttpRequest(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "embeddings")
HttpRequestMessage<EmbeddingsRequest> request,
@EmbeddingsInput(name = "Embeddings", input = "{RawText}", inputType = InputType.RawText, embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%") String embeddingsContext,
final ExecutionContext context) {
if (request.getBody() == null)
{
throw new IllegalArgumentException(
"Invalid request body. Make sure that you pass in {\"rawText\": value } as the request body.");
}
JSONObject embeddingsContextJsonObject = new JSONObject(embeddingsContext);
context.getLogger().info(String.format("Received %d embedding(s) for input text containing %s characters.",
embeddingsContextJsonObject.get("count"),
request.getBody().getRawText().length()));
// TODO: Store the embeddings into a database or other storage.
return request.createResponseBuilder(HttpStatus.ACCEPTED)
.header("Content-Type", "application/json")
.build();
}
Bu örnek, işlevin erişebildiği belirtilen bir dosyada depolanan eklemelerin nasıl alındığını gösterir.
@FunctionName("GenerateEmbeddingsHttpFilePath")
public HttpResponseMessage generateEmbeddingsHttpFilePath(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "embeddings-from-file")
HttpRequestMessage<EmbeddingsRequest> request,
@EmbeddingsInput(name = "Embeddings", input = "{FilePath}", inputType = InputType.FilePath, maxChunkLength = 512, embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%") String embeddingsContext,
final ExecutionContext context) {
if (request.getBody() == null)
{
throw new IllegalArgumentException(
"Invalid request body. Make sure that you pass in {\"filePath\": value } as the request body.");
}
JSONObject embeddingsContextJsonObject = new JSONObject(embeddingsContext);
context.getLogger().info(String.format("Received %d embedding(s) for input file %s.",
embeddingsContextJsonObject.get("count"),
request.getBody().getFilePath()));
// TODO: Store the embeddings into a database or other storage.
return request.createResponseBuilder(HttpStatus.ACCEPTED)
.header("Content-Type", "application/json")
.build();
}
Bu örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
const embeddingsHttpInput = input.generic({
input: '{rawText}',
inputType: 'RawText',
type: 'embeddings',
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%'
})
app.http('generateEmbeddings', {
methods: ['POST'],
route: 'embeddings',
authLevel: 'function',
extraInputs: [embeddingsHttpInput],
handler: async (request, context) => {
let requestBody = await request.json();
let response = context.extraInputs.get(embeddingsHttpInput);
context.log(
`Received ${response.count} embedding(s) for input text containing ${requestBody.RawText.length} characters.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
interface EmbeddingsHttpRequest {
RawText?: string;
}
const embeddingsHttpInput = input.generic({
input: '{rawText}',
inputType: 'RawText',
type: 'embeddings',
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%'
})
app.http('generateEmbeddings', {
methods: ['POST'],
route: 'embeddings',
authLevel: 'function',
extraInputs: [embeddingsHttpInput],
handler: async (request, context) => {
let requestBody: EmbeddingsHttpRequest = await request.json();
let response: any = context.extraInputs.get(embeddingsHttpInput);
context.log(
`Received ${response.count} embedding(s) for input text containing ${requestBody.RawText.length} characters.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
Bu örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
const embeddingsFilePathInput = input.generic({
input: '{filePath}',
inputType: 'FilePath',
type: 'embeddings',
maxChunkLength: 512,
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%'
})
app.http('getEmbeddingsFilePath', {
methods: ['POST'],
route: 'embeddings-from-file',
authLevel: 'function',
extraInputs: [embeddingsFilePathInput],
handler: async (request, context) => {
let requestBody = await request.json();
let response = context.extraInputs.get(embeddingsFilePathInput);
context.log(
`Received ${response.count} embedding(s) for input file ${requestBody.FilePath}.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
interface EmbeddingsFilePath {
FilePath?: string;
}
const embeddingsFilePathInput = input.generic({
input: '{filePath}',
inputType: 'FilePath',
type: 'embeddings',
maxChunkLength: 512,
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%'
})
app.http('getEmbeddingsFilePath', {
methods: ['POST'],
route: 'embeddings-from-file',
authLevel: 'function',
extraInputs: [embeddingsFilePathInput],
handler: async (request, context) => {
let requestBody: EmbeddingsFilePath = await request.json();
let response: any = context.extraInputs.get(embeddingsFilePathInput);
context.log(
`Received ${response.count} embedding(s) for input file ${requestBody.FilePath}.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
Bu örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
Eklemeleri oluşturmak için function.json dosyası aşağıdadır:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "embeddings",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "Embeddings",
"type": "embeddings",
"direction": "in",
"inputType": "RawText",
"input": "{rawText}",
"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, $Embeddings)
$input = $Request.Body.RawText
Write-Host "Received $($Embeddings.Count) embedding(s) for input text containing $($input.Length) characters."
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::Accepted
})
Bu örnekte ham metin dizesi için eklemelerin nasıl oluşturulacağı gösterilmektedir.
@app.function_name("GenerateEmbeddingsHttpRequest")
@app.route(route="embeddings", methods=["POST"])
@app.embeddings_input(
arg_name="embeddings",
input="{rawText}",
input_type="rawText",
embeddings_model="%EMBEDDING_MODEL_DEPLOYMENT_NAME%",
)
def generate_embeddings_http_request(
req: func.HttpRequest, embeddings: str
) -> func.HttpResponse:
user_message = req.get_json()
embeddings_json = json.loads(embeddings)
embeddings_request = {"raw_text": user_message.get("rawText")}
logging.info(
f'Received {embeddings_json.get("count")} embedding(s) for input text '
f'containing {len(embeddings_request.get("raw_text"))} characters.'
)
# TODO: Store the embeddings into a database or other storage.
return func.HttpResponse(status_code=200)
Özellikler
EmbeddingsInput Şu parametreleri destekleyen bir embeddings giriş 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. |
Ek Açıklamalar
Ek EmbeddingsInput açıklama, şu parametreleri destekleyen bir embeddings giriş bağlaması tanımlamanızı sağlar:
| Öğe | Açıklama |
|---|---|
| ad | Giriş 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. |
Dekoratörler
Önizleme sırasında, giriş bağlamasını türündeki generic_input_bindingbir embeddings bağlama olarak tanımlayın ve bu da şu parametreleri destekler: embeddings dekoratör şu parametreleri destekler:
| 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. |
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 EmbeddingsInput. |
| yön | olmalıdır in. |
| ad | Giriş 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. |
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. |
Tam örnekler için Örnek bölümüne bakın.
Kullanım
Varsayılan eklemelerin model değiştirilmesi, eklemelerin vektör veritabanında depolanma şeklini değiştirir. Varsayılan modelin değiştirilmesi, daha önce vektör veritabanına alınan verilerin geri kalanıyla eşleşmediğinde aramaların yanlış davranmaya başlamasına neden olabilir. Eklemeler için varsayılan model şeklindedir text-embedding-ada-002.
Giriş öbekleri için maksimum karakter uzunluğunu hesaplarken, gibi text-embedding-ada-002 ikinci nesil giriş ekleme modelleri için izin verilen en fazla giriş belirtecinin olduğunu 8191göz önünde bulundurun. Tek bir belirtecin uzunluğu yaklaşık dört karakterdir (İngilizce), tek bir öbeke sığabilecek yaklaşık 32.000 (İngilizce) giriş karakterine çevrilir.