Indatabindning för Azure OpenAI-textslutning för Azure Functions
Viktigt!
Azure OpenAI-tillägget för Azure Functions är för närvarande i förhandsversion.
Med indatabindningen för Azure OpenAI-textkomplettering kan du ta med API:erna för slutförande av resultattext i dina kodkörningar. Du kan definiera bindningen för att använda båda fördefinierade prompterna med parametrar eller skicka en hel fråga.
Information om konfiguration och konfigurationsinformation för Azure OpenAI-tillägget finns i Azure OpenAI-tillägg för Azure Functions. Mer information om Azure OpenAI-slutföranden finns i Lär dig hur du genererar eller manipulerar text.
Kommentar
Referenser och exempel tillhandahålls endast för modellen Node.js v4.
Kommentar
Referenser och exempel tillhandahålls endast för Python v2-modellen.
Kommentar
Båda C#-processmodellerna stöds, men endast exempel på isolerade arbetsmodeller tillhandahålls.
Exempel
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
[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>
Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.
[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);
}
}
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
@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();
}
Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.
@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();
}
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
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() }
}
});
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
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() }
}
});
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
Här är filen function.json för 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%"
}
]
}
Mer information om function.json filegenskaper finns i avsnittet Konfiguration .
Koden returnerar helt enkelt texten från slutförande-API:et som svar:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name
parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.
@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)
Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.
@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)
Attribut
Det specifika attribut som du använder för att definiera en indatabindning för textslut beror på C#-processläget.
I den isolerade arbetsmodellen använder du TextCompletionInput
för att definiera en indatabindning för textslut.
Attributet stöder följande parametrar:
Parameter | Description |
---|---|
Prompt | Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng. |
Modell | Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo . |
Temperatur | Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2 . Högre värden (0.8 ) gör utdata mer slumpmässiga, medan lägre värden som (0.2 ) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP , men inte båda. |
TopP | Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP , men inte båda. |
MaxTokens | Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100 . Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096). |
Kommentarer
Med anteckningen TextCompletion
kan du definiera en indatabindning för text som stöder följande parametrar:
Element | Description |
---|---|
Namn | Hämtar eller anger namnet på indatabindningen. |
snabb | Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng. |
modell | Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo . |
temperatur | Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2 . Högre värden (0.8 ) gör utdata mer slumpmässiga, medan lägre värden som (0.2 ) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP , men inte båda. |
topP | Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP , men inte båda. |
maxTokens | Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100 . Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096). |
Dekoratörer
Under förhandsversionen definierar du indatabindningen som en generic_input_binding
bindning av typen textCompletion
, som stöder följande parametrar:
Parameter | Description |
---|---|
arg_name | Namnet på variabeln som representerar bindningsparametern. |
snabb | Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng. |
modell | Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo . |
temperatur | Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2 . Högre värden (0.8 ) gör utdata mer slumpmässiga, medan lägre värden som (0.2 ) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP , men inte båda. |
top_p | Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP , men inte båda. |
max_tokens | Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100 . Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096). |
Konfiguration
Bindningen stöder de konfigurationsegenskaper som du anger i filen function.json.
Property | Beskrivning |
---|---|
typ | Måste vara textCompletion . |
riktning | Måste vara in . |
Namn | Namnet på indatabindningen. |
snabb | Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng. |
modell | Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo . |
temperatur | Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2 . Högre värden (0.8 ) gör utdata mer slumpmässiga, medan lägre värden som (0.2 ) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP , men inte båda. |
topP | Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP , men inte båda. |
maxTokens | Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100 . Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096). |
Konfiguration
Bindningen stöder dessa egenskaper, som definieras i koden:
Property | beskrivning |
---|---|
snabb | Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng. |
modell | Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo . |
temperatur | Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2 . Högre värden (0.8 ) gör utdata mer slumpmässiga, medan lägre värden som (0.2 ) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP , men inte båda. |
topP | Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP , men inte båda. |
maxTokens | Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100 . Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096). |
Användning
Se avsnittet Exempel för fullständiga exempel.