Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Warning
Rozszerzenie Azure OpenAI dla Azure Functions wycofuje się 20 kwietnia 2027 roku. Pakiet rozszerzenia podglądowy w wersji 4.60.0 i nowszych nie zawiera tego rozszerzenia.
Migruj bezpośrednio do SDK OpenAI, Microsoft Foundry lub Wyszukiwanie AI platformy Azure, w zależności od sytuacji. Istniejące aplikacje mogą korzystać z wersji pakietów rozszerzonych podglądu starszych niż 4.60.0, ustawiając zakres wersji na [4.*, 4.60.0) .host.json Aplikacje .NET mogą nadal korzystać bezpośrednio z odpowiadających pakietów NuGet do Azure OpenAI. Ani przypinanie starszego pakietu, ani dalsze korzystanie z pakietów NuGet nie przedłuża wsparcia po 20 kwietnia 2027 roku.
Powiązanie wejściowe osadzania interfejsu Azure OpenAI umożliwia generowanie osadzonych danych wejściowych. Powiązanie może generować osadzanie z plików lub nieprzetworzonych danych wejściowych tekstu.
Aby uzyskać informacje na temat konfigurowania i konfigurowania rozszerzenia Azure OpenAI, zobacz Azure OpenAI extensions for Azure Functions (Rozszerzenia azure OpenAI dla usługi Azure Functions). Aby dowiedzieć się więcej na temat osadzania w usłudze Azure OpenAI Service, zobacz Omówienie osadzania w usłudze Azure OpenAI Service.
Uwaga
Odwołania i przykłady są udostępniane tylko dla modelu Node.js w wersji 4.
Uwaga
Odwołania i przykłady są udostępniane tylko dla modelu języka Python w wersji 2.
Uwaga
Chociaż oba modele procesów języka C# są obsługiwane, udostępniane są tylko izolowane przykłady modeli procesów roboczych.
Przykład
Wsparcie Go nie jest obecnie dostępne dla tego przypisania.
W tym przykładzie pokazano, jak wygenerować osadzanie dla nieprzetworzonego ciągu tekstowego.
internal class EmbeddingsRequest
{
[JsonPropertyName("rawText")]
public string? RawText { get; set; }
[JsonPropertyName("fileName")]
public string? FileName { 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%", AIConnectionName = "AzureOpenAI")] 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.
}
Ten przykład pokazuje, jak generować osadzenia dla pliku dostępnego dla funkcji.
Ustaw OPENAI_EMBEDDINGS_FILE_PATH_ROOT i przekaż ścieżkę względem tego folderu.
[Function(nameof(GetEmbeddings_Http_FilePath))]
public async Task GetEmbeddings_Http_FilePath(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "embeddings-from-file")] HttpRequestData req,
[EmbeddingsInput("{fileName}", InputType.FilePath, MaxChunkLength = 512, EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] 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?.FileName);
// TODO: Store the embeddings into a database or other storage.
}
W tym przykładzie pokazano, jak wygenerować osadzanie dla nieprzetworzonego ciągu tekstowego.
@FunctionName("GenerateEmbeddingsHttpRequest")
public HttpResponseMessage generateEmbeddingsHttpRequest(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.FUNCTION,
route = "embeddings")
HttpRequestMessage<EmbeddingsRequest> request,
@EmbeddingsInput(name = "Embeddings", input = "{RawText}", inputType = InputType.RawText, embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", aiConnectionName = "AzureOpenAI") 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();
}
Ten przykład pokazuje, jak generować osadzenia dla pliku dostępnego dla funkcji.
Ustaw OPENAI_EMBEDDINGS_FILE_PATH_ROOT i przekaż ścieżkę względem tego folderu.
@FunctionName("GenerateEmbeddingsHttpFilePath")
public HttpResponseMessage generateEmbeddingsHttpFilePath(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.FUNCTION,
route = "embeddings-from-file")
HttpRequestMessage<EmbeddingsRequest> request,
@EmbeddingsInput(name = "Embeddings", input = "{FileName}", inputType = InputType.FilePath, maxChunkLength = 512, embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%", aiConnectionName = "AzureOpenAI") String embeddingsContext,
final ExecutionContext context) {
if (request.getBody() == null)
{
throw new IllegalArgumentException(
"Invalid request body. Make sure that you pass in {\"fileName\": 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().getFileName()));
// TODO: Store the embeddings into a database or other storage.
return request.createResponseBuilder(HttpStatus.ACCEPTED)
.header("Content-Type", "application/json")
.build();
}
W tym przykładzie pokazano, jak wygenerować osadzanie dla nieprzetworzonego ciągu tekstowego.
const embeddingsHttpInput = input.generic({
input: '{rawText}',
inputType: 'RawText',
type: 'embeddings',
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%',
aiConnectionName: 'AzureOpenAI',
})
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 ?? 0} 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%',
aiConnectionName: 'AzureOpenAI',
})
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 ?? 0} characters.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
Ten przykład pokazuje, jak generować osadzenia dla pliku dostępnego dla funkcji.
Ustaw OPENAI_EMBEDDINGS_FILE_PATH_ROOT i przekaż ścieżkę względem tego folderu.
const embeddingsFilePathInput = input.generic({
input: '{fileName}',
inputType: 'FilePath',
type: 'embeddings',
maxChunkLength: 512,
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%',
aiConnectionName: 'AzureOpenAI',
})
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.fileName}.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
interface EmbeddingsFilePath {
fileName?: string;
}
const embeddingsFilePathInput = input.generic({
input: '{fileName}',
inputType: 'FilePath',
type: 'embeddings',
maxChunkLength: 512,
embeddingsModel: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%',
aiConnectionName: 'AzureOpenAI',
})
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.fileName}.`
);
// TODO: Store the embeddings into a database or other storage.
return {status: 202}
}
});
W tym przykładzie pokazano, jak wygenerować osadzanie dla nieprzetworzonego ciągu tekstowego.
Oto plik function.json do generowania osadzania:
{
"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%",
"aiConnectionName": "AzureOpenAI"
}
]
}
Aby uzyskać więcej informacji na temat function.json właściwości pliku, zobacz sekcję Konfiguracja.
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
})
W tym przykładzie pokazano, jak wygenerować osadzanie dla nieprzetworzonego ciągu tekstowego.
@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%",
ai_connection_name="AzureOpenAI",
)
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)
Atrybuty
Zastosuj atrybut, EmbeddingsInput aby zdefiniować powiązanie wejściowe osadzania, które obsługuje następujące parametry:
| Parametr | Opis |
|---|---|
| Dane wejściowe | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| AIConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| EmbeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| MaxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| MaxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| InputType |
Opcjonalne. Typ wejścia: RawText, FilePath, lub Url. Dla FilePath i Url, zobacz Ogranicz wejścia plików i URL. |
Adnotacje
Adnotacja EmbeddingsInput umożliwia zdefiniowanie powiązania wejściowego osadzania, które obsługuje następujące parametry:
| Składnik | Opis |
|---|---|
| nazwa | Pobiera lub ustawia nazwę powiązania wejściowego. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType |
Opcjonalne. Typ wejścia: RawText, FilePath, lub Url. Dla FilePath i Url, zobacz Ogranicz wejścia plików i URL. |
Dekoratory
W wersji zapoznawczej zdefiniuj powiązanie wejściowe jako generic_input_binding powiązanie typu embeddings, które obsługuje następujące parametry: embeddings dekorator obsługuje następujące parametry:
| Parametr | Opis |
|---|---|
| arg_name | Nazwa zmiennej reprezentującej parametr powiązania. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| ai_connection_name | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddings_model |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| max_overlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| input_type | Typ wejścia: RawText, FilePath, lub Url. Dla FilePath i Url, zobacz Ogranicz wejścia plików i URL. |
Konfigurowanie
Powiązanie obsługuje te właściwości konfiguracji ustawione w pliku function.json.
| Właściwości | Opis |
|---|---|
| typ | Musi mieć wartość EmbeddingsInput. |
| kierunek | Musi mieć wartość in. |
| nazwa | Nazwa powiązania wejściowego. |
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType |
Opcjonalne. Typ wejścia: RawText, FilePath, lub Url. Dla FilePath i Url, zobacz Ogranicz wejścia plików i URL. |
Konfigurowanie
Powiązanie obsługuje te właściwości zdefiniowane w kodzie:
| Właściwości | Opis |
|---|---|
| wkład | Ciąg wejściowy, dla którego mają być generowane osadzanie. |
| aiConnectionName | Opcjonalne. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY. |
| embeddingsModel |
Opcjonalne. Identyfikator modelu do użycia, który domyślnie ma wartość text-embedding-ada-002. Nie należy zmieniać modelu dla istniejącej bazy danych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxChunkLength | Opcjonalne. Maksymalna liczba znaków używanych do fragmentowania danych wejściowych. Aby uzyskać więcej informacji, zobacz Użycie. |
| maxOverlap | Opcjonalne. Pobiera lub ustawia maksymalną liczbę znaków nakładających się między fragmentami. |
| inputType |
Opcjonalne. Typ wejścia: RawText, FilePath, lub Url. Dla FilePath i Url, zobacz Ogranicz wejścia plików i URL. |
Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.
Użycie
Zmiana domyślnych osadzeń model zmienia sposób przechowywania osadzania w bazie danych wektorów. Zmiana modelu domyślnego może spowodować, że wyszukiwanie zacznie działać nieprawidłowo, gdy nie są zgodne z resztą danych, które zostały wcześniej pozyskane do bazy danych wektorów. Domyślnym modelem osadzania jest text-embedding-ada-002.
Podczas obliczania maksymalnej długości znaków dla fragmentów wejściowych należy wziąć pod uwagę, że maksymalne tokeny wejściowe dozwolone dla modeli osadzania danych wejściowych drugiej generacji, takich jak text-embedding-ada-002 .8191 Pojedynczy token ma długość około czterech znaków (w języku angielskim), co przekłada się na około 32 000 znaków danych wejściowych, które mogą mieścić się w jednym kawałku.
Ogranicz wejścia plików i URL
Użyj tych ustawień aplikacji, aby ograniczyć źródła, które bindingu może czytać. Te ustawienia nie wpływają RawText na dane wejściowe.
| Ustawienie aplikacji | Typ danych wejściowych | Opis |
|---|---|---|
OPENAI_EMBEDDINGS_FILE_PATH_ROOT |
FilePath |
Ogranicza dane wejściowe plików do skonfigurowanego katalogu. Przekażcie ścieżki względem tego katalogu. Ścieżki absolutne, ścieżki poza katalogiem oraz symboliczne linki lub punkty reparse są odrzucane. |
OPENAI_EMBEDDINGS_URL_ALLOWED_ORIGINS |
Url |
Ogranicza wejścia URL do listy oddzielonej przecinkami z początkami HTTPS, takiej jak https://contoso.com,https://docs.contoso.com. Każde źródło zawiera schemat, host i opcjonalny port, ale nie ma ścieżki, zapytania ani fragmentu. Przekierowania są odrzucane. |
Important
Kiedy inputType jest lub FilePathUrl i dane wejściowe pochodzą z danych żądania lub wyzwalania, ustawionych OPENAI_EMBEDDINGS_FILE_PATH_ROOT lub OPENAI_EMBEDDINGS_URL_ALLOWED_ORIGINS w ustawieniach aplikacji funkcji, odpowiednio. W przeciwnym razie powiązanie odczytuje każdy plik, który aplikacja może odczytać, lub pobiera dowolny adres URL HTTPS.
Connections
Te wytyczne dotyczą istniejących aplikacji korzystających z rozszerzenia Azure OpenAI, które wycofuje się 20 kwietnia 2027 roku. Podczas migracji do bezpośrednich wywołań SDK postępuj zgodnie z instrukcjami uwierzytelniania i połączenia dla wybranego przez siebie SDK zamiast korzystać z ustawień powiązania rozszerzenia.
Aby korzystać z rozszerzenia Azure OpenAI, musisz określić połączenie z definicją modelu OpenAI. Ustaw połączenie modelu OpenAI w swoich bindingach, stosując jedno z następujących podejść:
- Użyj właściwości wiązania
AIConnectionName(preferowanej dla Azure OpenAI). - Ustaw
AZURE_OPENAI_ENDPOINTiAZURE_OPENAI_KEYw ustawieniach aplikacji (dla Azure OpenAI). - Ustaw tylko
Open_API_Keyw ustawieniach aplikacji (dlahttps://api.openai.com).
Sposób, w jaki ustawiasz połączenie, zależy zarówno od API modelu, jak i metody uwierzytelniania, jak pokazano w poniższej tabeli:
| API uwierzytelniania/modelu | Azure OpenAI | OpenAI (https://api.openai.com) |
|---|---|---|
| Połączenie zarządzanej tożsamości | AIConnectionName |
Niewspierane |
| Odniesienie do Key Vault | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Referencja konfiguracji aplikacji | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| Wspólny klucz tajny | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
Użyj połączeń opartych na zarządzanej tożsamości oraz właściwości AIConnectionName .
Gdy używamy AIConnectionName, wartość tego ustawienia właściwości zależy od typu połączenia:
-
Połączenie zarządzanej tożsamości: Własność
AIConnectionNamejest współdzielona<CONNECTION_NAME_PREFIX>przez grupę ustawień, które razem definiują połączenie oparte na tożsamości z Azure OpenAI. Więcej informacji można znaleźć w artykule Definiuj powiązania tożsamości. -
Key Vault referencja: Ustawienie
AIConnectionNamewłaściwości zwraca referencję Azure Key Vault do miejsca, w którym klucz API jest centralnie przechowywany. Więcej informacji można znaleźć w artykule Definiuj połączenia Key Vault. -
Referencja konfiguracji aplikacji: Ustawienie
AIConnectionNamewłaściwości zwraca referencję Azure App Configuration, która zwraca klucz API lub referencję do Key Vault. Więcej informacji można znaleźć w artykule o połączeniach w sekcji Azure App Configuration. -
Klucz API: Ustawienie
AIConnectionNamewłaściwości rozwiązuje się bezpośrednio do ustawień aplikacji zawierających punkt końcowy i klucz. Ponieważ klucze współdzielone mogą zostać zagrożone, stosuj połączenia zarządzane tożsamości, gdy to możliwe. Więcej informacji można znaleźć w artykule Definiuj połączenia.
Aby dowiedzieć się więcej o powiązaniach wiązanych, zobacz Zarządzanie połączeniami w Azure Functions.
Powiązania OpenAI zawierają właściwośćAIConnectionName, którą możesz użyć do określenia <ConnectionNamePrefix> grupy ustawień aplikacji definiujących połączenie z Azure OpenAI:
| Nazwa ustawień | Opis |
|---|---|
<CONNECTION_NAME_PREFIX>__endpoint |
Sets endpoint URI usługi Azure OpenAI. To ustawienie jest zawsze wymagane. |
<CONNECTION_NAME_PREFIX>__clientId |
Ustawia określoną tożsamość przypisaną przez użytkownika do użycia podczas uzyskiwania tokenu dostępu. Wymaga, aby <CONNECTION_NAME_PREFIX>__credential było ustawione na managedidentity. Właściwość akceptuje identyfikator klienta odpowiadający tożsamości przypisanej przez użytkownika do aplikacji. Jest to nieprawidłowe określenie zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli nie określisz tej właściwości, używana jest tożsamość przypisana przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać. |
<CONNECTION_NAME_PREFIX>__credential |
Definiuje sposób uzyskiwania tokenu access dla połączenia. Służy managedidentity do uwierzytelniania tożsamości zarządzanej. Ta wartość jest prawidłowa tylko wtedy, gdy tożsamość zarządzana jest dostępna w środowisku hostingu. |
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId |
Gdy credential jest ustawione na managedidentity, ustaw tę właściwość, aby określić identyfikator zasobu, którego ma się użyć przy uzyskaniu tokena. Właściwość akceptuje identyfikator zasobu odpowiadający identyfikatorowi zasobu tożsamości zarządzanej zdefiniowanej przez użytkownika. Nie można określić zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli nie określisz żadnej z tych funkcji, używa się tożsamości przypisanej przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać. |
<CONNECTION_NAME_PREFIX>__key |
Ustawia wspólny tajny klucz potrzebny do dostępu do punktu końcowego usługi Azure OpenAI, korzystając z uwierzytelniania opartego na kluczu. Jako najlepszą praktykę bezpieczeństwa zawsze używaj Microsoft Entra ID z zarządzanymi tożsamościami do uwierzytelniania. |
Rozważ te ustawienia zarządzania połączeniem tożsamości, gdy ustawiasz AIConnectionName własność na:myAzureOpenAI
myAzureOpenAI__endpoint=https://contoso.openai.azure.com/myAzureOpenAI__credential=managedidentitymyAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222
W czasie działania host interpretuje te ustawienia jako jedno myAzureOpenAI ustawienie:
"myAzureOpenAI":
{
"endpoint": "https://contoso.openai.azure.com/",
"credential": "managedidentity",
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
Korzystając z zarządzanych tożsamości, upewnij się, że dodajesz swoją tożsamość do roli użytkownika OpenAI w Usługach Kognitywnych .
Podczas uruchamiania lokalnie dodaj te ustawienia do pliku projektu local.settings.json . Aby uzyskać więcej informacji, zobacz Programowanie lokalne przy użyciu połączeń opartych na tożsamościach.
Aby uzyskać więcej informacji, zobacz Praca z ustawieniami aplikacji.