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ások bemeneti kötése lehetővé teszi, hogy beágyazásokat hozzon létre a bemenetekhez. A kötés beágyazásokat hozhat létre fájlokból vagy nyers szöveges bemenetekből.
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 OpenAI Szolgáltatásba történő beágyazásokról további információt az Azure OpenAI szolgáltatásban történő beágyazások ismertetése című témakörben talál.
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 bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
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.
}
Ez a példa bemutatja, hogyan kérhetők le a függvény számára elérhető, megadott fájlban tárolt beágyazások.
[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.
}
Ez a példa bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
@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();
}
Ez a példa bemutatja, hogyan kérhetők le a függvény számára elérhető, megadott fájlban tárolt beágyazások.
@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();
}
Ez a példa bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
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}
}
});
Ez a példa bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
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}
}
});
Ez a példa bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
A beágyazások létrehozásához a következő function.json fájl található:
{
"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%"
}
]
}
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, $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
})
Ez a példa bemutatja, hogyan hozhat létre beágyazásokat egy nyers szöveges sztringhez.
@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)
Attribútumok
Alkalmazza az EmbeddingsInput attribútumot a beágyazások bemeneti kötésének meghatározására, amely az alábbi paramétereket támogatja:
| 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. |
Jegyzetek
A EmbeddingsInput széljegyzet lehetővé teszi a beágyazások bemeneti kötésének definiálását, amely az alábbi paramétereket támogatja:
| Elem | Leírás |
|---|---|
| név | Lekéri vagy beállítja a bemeneti 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. |
Dekorátorok
Az előzetes verzióban adja meg a bemeneti kötést generic_input_binding a következő paramétereket támogató típusú embeddingskötésként: embeddings a dekoratőr a következő paramétereket támogatja:
| 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. |
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 EmbeddingsInput. |
| irány | Kell lennie in. |
| név | A bemeneti 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. |
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. |
A teljes példákért tekintse meg a Példa szakaszt .
Használat
Az alapértelmezett beágyazások model módosítása megváltoztatja a beágyazások vektoradatbázisban való tárolásának módját. Az alapértelmezett modell módosítása esetén a keresések hibásan viselkedhetnek, ha nem egyeznek a vektoradatbázisba korábban betöltött többi adatéval. A beágyazások alapértelmezett modellje a text-embedding-ada-002következő: .
A bemeneti adattömbök maximális karakterhosszának kiszámításakor vegye figyelembe, hogy a második generációs bemeneti beágyazási modellekhez engedélyezett maximális bemeneti jogkivonatok például text-embedding-ada-002 a 8191. Egyetlen token körülbelül négy karakter hosszúságú (angol nyelven), amely körülbelül 32 000 (angol) karakternyi bemeneti karaktert jelent, amely egyetlen adattömbbe illeszthető.