Vstupní vazba pro dokončování textu Azure OpenAI pro Azure Functions
Důležité
Rozšíření Azure OpenAI pro Azure Functions je aktuálně ve verzi Preview.
Vstupní vazba pro dokončování textu Azure OpenAI umožňuje přenést rozhraní API pro dokončování textu výsledků do provádění kódu. Můžete definovat vazbu tak, aby používala obě předdefinované výzvy s parametry nebo prošel celou výzvou.
Informace o nastavení a konfiguraci rozšíření Azure OpenAI najdete v tématu Rozšíření Azure OpenAI pro Azure Functions. Další informace o doplňování Azure OpenAI najdete v tématu O tom, jak generovat nebo manipulovat s textem.
Poznámka:
Odkazy a příklady jsou k dispozici pouze pro model Node.js v4.
Poznámka:
Odkazy a příklady jsou k dispozici pouze pro model Pythonu v2.
Poznámka:
I když jsou podporovány oba modely procesu jazyka C#, jsou k dispozici pouze příklady izolovaného modelu pracovního procesu .
Příklad
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
[HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
[TextCompletionInput("Who is {name}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
return new OkObjectResult(response.Content);
}
/// <summary>
V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
[TextCompletionInput("{Prompt}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
ILogger log)
{
string text = response.Content;
return new OkObjectResult(text);
}
}
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "whois/{name}")
HttpRequestMessage<Optional<String>> request,
@BindingName("name") String name,
@TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.
@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@TextCompletion(prompt = "{prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
const { app, input } = require("@azure/functions");
// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
prompt: 'Who is {name}?',
maxTokens: '100',
type: 'textCompletion',
model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})
app.http('whois', {
methods: ['GET'],
route: 'whois/{name}',
authLevel: 'function',
extraInputs: [openAICompletionInput],
handler: async (_request, context) => {
var response = context.extraInputs.get(openAICompletionInput)
return { body: response.content.trim() }
}
});
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
import { app, input } from "@azure/functions";
// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
prompt: 'Who is {name}?',
maxTokens: '100',
type: 'textCompletion',
model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})
app.http('whois', {
methods: ['GET'],
route: 'whois/{name}',
authLevel: 'function',
extraInputs: [openAICompletionInput],
handler: async (_request, context) => {
var response: any = context.extraInputs.get(openAICompletionInput)
return { body: response.content.trim() }
}
});
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
Tady je soubor function.json pro TextCompletionResponse
:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "whois/{name}",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "textCompletion",
"direction": "in",
"name": "TextCompletionResponse",
"prompt": "Who is {name}?",
"maxTokens": "100",
"model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
}
]
}
Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .
Kód jednoduše vrátí text z rozhraní API pro dokončování jako odpověď:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name
parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.
@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
response_json = json.loads(response)
return func.HttpResponse(response_json["content"], status_code=200)
V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.
@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(arg_name="response", prompt="{Prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
def genericcompletion(req: func.HttpRequest, response: str) -> func.HttpResponse:
response_json = json.loads(response)
return func.HttpResponse(response_json["content"], status_code=200)
Atributy
Konkrétní atribut, který použijete k definování vstupní vazby pro dokončování textu, závisí na režimu procesu jazyka C#.
V izolovaném pracovním modelu použijte TextCompletionInput
definici vstupní vazby pro dokončování textu.
Atribut podporuje tyto parametry:
Parametr | Popis |
---|---|
Instrukce | Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec. |
Model | Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo . |
Teplota | Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2 . Vyšší hodnoty (0.8 ) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2 ) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
TopP | Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
MaxTokens | Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100 . Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096). |
Poznámky
Poznámka TextCompletion
umožňuje definovat vstupní vazbu pro dokončování textu, která podporuje tyto parametry:
Element (Prvek) | Popis |
---|---|
Jméno | Získá nebo nastaví název vstupní vazby. |
pobídnout | Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec. |
model | Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo . |
teplota | Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2 . Vyšší hodnoty (0.8 ) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2 ) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
topP | Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
maxTokens | Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100 . Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096). |
Dekoratéry
Během náhledu definujte vstupní vazbu jako generic_input_binding
vazbu typu textCompletion
, která podporuje tyto parametry:
Parametr | Popis |
---|---|
arg_name | Název proměnné, která představuje parametr vazby. |
pobídnout | Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec. |
model | Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo . |
teplota | Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2 . Vyšší hodnoty (0.8 ) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2 ) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
top_p | Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
max_tokens | Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100 . Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096). |
Konfigurace
Vazba podporuje tyto vlastnosti konfigurace, které jste nastavili v souboru function.json.
Vlastnost | Popis |
---|---|
type | Musí být textCompletion . |
direction | Musí být in . |
Jméno | Název vstupní vazby. |
pobídnout | Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec. |
model | Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo . |
teplota | Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2 . Vyšší hodnoty (0.8 ) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2 ) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
topP | Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
maxTokens | Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100 . Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096). |
Konfigurace
Vazba podporuje tyto vlastnosti, které jsou definovány v kódu:
Vlastnost | Popis |
---|---|
pobídnout | Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec. |
model | Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo . |
teplota | Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2 . Vyšší hodnoty (0.8 ) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2 ) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
topP | Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP , ale ne obojí. |
maxTokens | Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100 . Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096). |
Využití
Kompletní příklady najdete v části Příklad.