Invoerbinding voor voltooiing van Azure OpenAI-tekst voor Azure Functions
Belangrijk
De Azure OpenAI-extensie voor Azure Functions is momenteel in preview.
Met de invoerbinding voor tekstvoltooiing van Azure OpenAI kunt u de voltooiings-API's voor resultatentekst overbrengen naar uw code-uitvoeringen. U kunt de binding definiëren om beide vooraf gedefinieerde prompts met parameters te gebruiken of een volledige prompt door te geven.
Zie Azure OpenAI-extensies voor Azure Functions voor informatie over de installatie en configuratie van de Azure OpenAI-extensie. Zie Meer informatie over het genereren of bewerken van tekst voor meer informatie over azure OpenAI-voltooiingen.
Notitie
Verwijzingen en voorbeelden worden alleen verstrekt voor het Node.js v4-model.
Notitie
Verwijzingen en voorbeelden worden alleen verstrekt voor het Python v2-model.
Notitie
Hoewel beide C#-procesmodellen worden ondersteund, worden alleen geïsoleerde werkrolmodelvoorbeelden gegeven.
Opmerking
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
[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>
In dit voorbeeld wordt een prompt als invoer gebruikt, wordt deze rechtstreeks naar de voltooiings-API verzonden en wordt het antwoord als uitvoer geretourneerd.
[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);
}
}
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
@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();
}
In dit voorbeeld wordt een prompt als invoer gebruikt, wordt deze rechtstreeks naar de voltooiings-API verzonden en wordt het antwoord als uitvoer geretourneerd.
@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();
}
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
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() }
}
});
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
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() }
}
});
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
Dit is het function.json-bestand voor 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%"
}
]
}
Zie de sectie Configuratie voor meer informatie over function.json bestandseigenschappen.
De code retourneert gewoon de tekst van de voltooiings-API als het antwoord:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
In dit voorbeeld wordt het sjabloonpatroon gedemonstreerd , waarbij de HTTP-triggerfunctie een name
parameter gebruikt en deze insluit in een tekstprompt, die vervolgens wordt verzonden naar de Voltooiings-API van Azure OpenAI door de extensie. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.
@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)
In dit voorbeeld wordt een prompt als invoer gebruikt, wordt deze rechtstreeks naar de voltooiings-API verzonden en wordt het antwoord als uitvoer geretourneerd.
@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)
Kenmerken
Het specifieke kenmerk dat u toepast om een invoerbinding voor tekstvoltooiing te definiëren, is afhankelijk van de C#-procesmodus.
Pas in het geïsoleerde werkrolmodel toe TextCompletionInput
om een invoerbinding voor tekstvoltooiing te definiëren.
Het kenmerk ondersteunt deze parameters:
Parameter | Description |
---|---|
Prompt | Hiermee wordt de prompt opgehaald of ingesteld voor het genereren van voltooiingen voor, gecodeerd als een tekenreeks. |
Model | Hiermee wordt de id van het model opgehaald of ingesteld voor gebruik als een tekenreeks, met een standaardwaarde van gpt-3.5-turbo . |
Temperatuur | Optioneel. Hiermee wordt de steekproeftemperatuur opgehaald of ingesteld voor gebruik als tekenreeks tussen 0 en 2 . Hogere waarden (0.8 ) maken de uitvoer willekeuriger, terwijl lagere waarden zoals (0.2 ) uitvoer meer gericht en deterministisch maken. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
TopP | Optioneel. Hiermee wordt een alternatief voor steekproeven met temperatuur, zogenaamde kernsampling, opgehaald of ingesteld als een tekenreeks. In deze steekproefmethode houdt het model rekening met de resultaten van de tokens met top_p waarschijnlijkheidsmassa. Dit betekent dat 0.1 alleen de tokens die de top 10% kansdichtheid omvatten, worden beschouwd. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
MaxTokens | Optioneel. Hiermee haalt of stelt u het maximum aantal tokens op dat moet worden gegenereerd in de voltooiing, als een tekenreeks met een standaardwaarde.100 Het tokenaantal van uw prompt plus max_tokens kan de contextlengte van het model niet overschrijden. De meeste modellen hebben een contextlengte van 2048 tokens (met uitzondering van de nieuwste modellen, die 4096 ondersteunen). |
Aantekeningen
Met de TextCompletion
aantekening kunt u een invoerbinding voor tekstvoltooiing definiëren, die ondersteuning biedt voor deze parameters:
Element | Description |
---|---|
name | Hiermee haalt u de naam van de invoerbinding op of stelt u deze in. |
prompt | Hiermee wordt de prompt opgehaald of ingesteld voor het genereren van voltooiingen voor, gecodeerd als een tekenreeks. |
model | Hiermee wordt de id van het model opgehaald of ingesteld voor gebruik als een tekenreeks, met een standaardwaarde van gpt-3.5-turbo . |
temperatuur | Optioneel. Hiermee wordt de steekproeftemperatuur opgehaald of ingesteld voor gebruik als tekenreeks tussen 0 en 2 . Hogere waarden (0.8 ) maken de uitvoer willekeuriger, terwijl lagere waarden zoals (0.2 ) uitvoer meer gericht en deterministisch maken. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
topP | Optioneel. Hiermee wordt een alternatief voor steekproeven met temperatuur, zogenaamde kernsampling, opgehaald of ingesteld als een tekenreeks. In deze steekproefmethode houdt het model rekening met de resultaten van de tokens met top_p waarschijnlijkheidsmassa. Dit betekent dat 0.1 alleen de tokens die de top 10% kansdichtheid omvatten, worden beschouwd. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
maxTokens | Optioneel. Hiermee haalt of stelt u het maximum aantal tokens op dat moet worden gegenereerd in de voltooiing, als een tekenreeks met een standaardwaarde.100 Het tokenaantal van uw prompt plus max_tokens kan de contextlengte van het model niet overschrijden. De meeste modellen hebben een contextlengte van 2048 tokens (met uitzondering van de nieuwste modellen, die 4096 ondersteunen). |
Decorators
Definieer tijdens de preview de invoerbinding als een generic_input_binding
binding van het type textCompletion
, die ondersteuning biedt voor deze parameters:
Parameter | Description |
---|---|
arg_name | De naam van de variabele die de bindingsparameter vertegenwoordigt. |
prompt | Hiermee wordt de prompt opgehaald of ingesteld voor het genereren van voltooiingen voor, gecodeerd als een tekenreeks. |
model | Hiermee wordt de id van het model opgehaald of ingesteld voor gebruik als een tekenreeks, met een standaardwaarde van gpt-3.5-turbo . |
temperatuur | Optioneel. Hiermee wordt de steekproeftemperatuur opgehaald of ingesteld voor gebruik als tekenreeks tussen 0 en 2 . Hogere waarden (0.8 ) maken de uitvoer willekeuriger, terwijl lagere waarden zoals (0.2 ) uitvoer meer gericht en deterministisch maken. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
top_p | Optioneel. Hiermee wordt een alternatief voor steekproeven met temperatuur, zogenaamde kernsampling, opgehaald of ingesteld als een tekenreeks. In deze steekproefmethode houdt het model rekening met de resultaten van de tokens met top_p waarschijnlijkheidsmassa. Dit betekent dat 0.1 alleen de tokens die de top 10% kansdichtheid omvatten, worden beschouwd. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
max_tokens | Optioneel. Hiermee haalt of stelt u het maximum aantal tokens op dat moet worden gegenereerd in de voltooiing, als een tekenreeks met een standaardwaarde.100 Het tokenaantal van uw prompt plus max_tokens kan de contextlengte van het model niet overschrijden. De meeste modellen hebben een contextlengte van 2048 tokens (met uitzondering van de nieuwste modellen, die 4096 ondersteunen). |
Configuratie
De binding ondersteunt deze configuratie-eigenschappen die u in het function.json-bestand hebt ingesteld.
Eigenschappen | Beschrijving |
---|---|
type | Moet textCompletion zijn. |
direction | Moet in zijn. |
name | De naam van de invoerbinding. |
prompt | Hiermee wordt de prompt opgehaald of ingesteld voor het genereren van voltooiingen voor, gecodeerd als een tekenreeks. |
model | Hiermee wordt de id van het model opgehaald of ingesteld voor gebruik als een tekenreeks, met een standaardwaarde van gpt-3.5-turbo . |
temperatuur | Optioneel. Hiermee wordt de steekproeftemperatuur opgehaald of ingesteld voor gebruik als tekenreeks tussen 0 en 2 . Hogere waarden (0.8 ) maken de uitvoer willekeuriger, terwijl lagere waarden zoals (0.2 ) uitvoer meer gericht en deterministisch maken. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
topP | Optioneel. Hiermee wordt een alternatief voor steekproeven met temperatuur, zogenaamde kernsampling, opgehaald of ingesteld als een tekenreeks. In deze steekproefmethode houdt het model rekening met de resultaten van de tokens met top_p waarschijnlijkheidsmassa. Dit betekent dat 0.1 alleen de tokens die de top 10% kansdichtheid omvatten, worden beschouwd. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
maxTokens | Optioneel. Hiermee haalt of stelt u het maximum aantal tokens op dat moet worden gegenereerd in de voltooiing, als een tekenreeks met een standaardwaarde.100 Het tokenaantal van uw prompt plus max_tokens kan de contextlengte van het model niet overschrijden. De meeste modellen hebben een contextlengte van 2048 tokens (met uitzondering van de nieuwste modellen, die 4096 ondersteunen). |
Configuratie
De binding ondersteunt deze eigenschappen, die zijn gedefinieerd in uw code:
Eigenschappen | Beschrijving |
---|---|
prompt | Hiermee wordt de prompt opgehaald of ingesteld voor het genereren van voltooiingen voor, gecodeerd als een tekenreeks. |
model | Hiermee wordt de id van het model opgehaald of ingesteld voor gebruik als een tekenreeks, met een standaardwaarde van gpt-3.5-turbo . |
temperatuur | Optioneel. Hiermee wordt de steekproeftemperatuur opgehaald of ingesteld voor gebruik als tekenreeks tussen 0 en 2 . Hogere waarden (0.8 ) maken de uitvoer willekeuriger, terwijl lagere waarden zoals (0.2 ) uitvoer meer gericht en deterministisch maken. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
topP | Optioneel. Hiermee wordt een alternatief voor steekproeven met temperatuur, zogenaamde kernsampling, opgehaald of ingesteld als een tekenreeks. In deze steekproefmethode houdt het model rekening met de resultaten van de tokens met top_p waarschijnlijkheidsmassa. Dit betekent dat 0.1 alleen de tokens die de top 10% kansdichtheid omvatten, worden beschouwd. U moet een van Temperature beide gebruiken of TopP , maar niet beide. |
maxTokens | Optioneel. Hiermee haalt of stelt u het maximum aantal tokens op dat moet worden gegenereerd in de voltooiing, als een tekenreeks met een standaardwaarde.100 Het tokenaantal van uw prompt plus max_tokens kan de contextlengte van het model niet overschrijden. De meeste modellen hebben een contextlengte van 2048 tokens (met uitzondering van de nieuwste modellen, die 4096 ondersteunen). |
Gebruik
Zie de sectie Voorbeeld voor volledige voorbeelden.