重要
适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。
Azure OpenAI 文本完成输入绑定允许将结果文本完成 API 引入代码执行。 可以定义绑定以将预定义提示与参数一起使用,或传递整个提示。
如需了解有关 Azure OpenAI 扩展的设置和配置详细信息,请参阅适用于 Azure Functions 的 Azure OpenAI 扩展。 若要了解有关 Azure OpenAI 完成的详细信息,请参阅 了解如何生成或作文本。
注释
仅提供了适用于 Node.js v4 模型的参考和示例。
注释
仅提供了适用于 Python v2 模型的参考和示例。
注释
虽然支持这两个 C# 进程模型,但仅 提供了独立的辅助角色模型 示例。
示例:
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 HTTP 响应中返回。
[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
[HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
[TextCompletionInput("Who is {name}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
return new OkObjectResult(response.Content);
}
此示例将提示作为输入,将其直接发送到完成 API,并将响应作为输出返回。
[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
[TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
ILogger log)
{
string text = response.Content;
return new OkObjectResult(text);
}
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 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}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
此示例将提示作为输入,将其直接发送到完成 API,并将响应作为输出返回。
@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 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',
chatModel: '%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() }
}
});
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 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',
chatModel: '%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() }
}
});
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 HTTP 响应中返回。
的 function.json 文件如下所示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",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%"
}
]
}
有关 function.json 文件属性的详细信息,请参阅配置部分。
代码只是将完成 API 中的文本作为响应返回:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
此示例演示 模板化 模式,其中 HTTP 触发器函数采用参数 name
并将其嵌入文本提示中,然后通过扩展将其发送到 Azure OpenAI 完成 API。 对提示的回复在 HTTP 响应中返回。
@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(
arg_name="response",
prompt="Who is {name}?",
max_tokens="100",
chat_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)
此示例将提示作为输入,将其直接发送到完成 API,并将响应作为输出返回。
@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(
arg_name="response",
prompt="{Prompt}",
chat_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)
特性
用于定义文本完成输入绑定的特定属性取决于 C# 进程模式。
该属性支持以下参数:
参数 | DESCRIPTION |
---|---|
提示 | 获取或设置要为其生成完成的提示,编码为字符串。 |
AIConnectionName | 可选。 获取或设置 AI 服务连接设置的配置节的名称。 对于 Azure OpenAI:如果已指定,请在此配置部分查找“终结点”和“密钥”值。 如果未指定或节不存在,请回退到环境变量:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 对于用户分配的托管标识身份验证,此属性是必需的。 对于 OpenAI 服务(非 Azure),请设置OPENAI_API_KEY环境变量。 |
ChatModel |
可选。 获取或设置要用作字符串的模型的 ID,默认值为 gpt-3.5-turbo . |
温度 |
可选。 获取或设置要使用的采样温度,作为两0 者之间的字符串。2 较高的值 (0.8 ) 使输出更随机,而较低的值(如)0.2 使输出更加集中和确定性。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
TopP |
可选。 获取或设置使用温度(称为核采样)作为字符串进行采样的替代方法。 在此采样方法中,模型将考虑概率质量为 top_p 标记的结果。 因此 0.1 ,仅考虑包含前 10 个% 概率质量的标记。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
MaxTokens |
可选。 获取或设置在完成时要生成的最大令牌数,作为默认值为 max_tokens 的令牌计数不能超过模型的上下文长度。 除最新模型(它支持 4096 个词元)外,大多数模型的上下文长度为 2,048 个词元。 |
IsReasoningModel |
可选。 获取或设置一个值,该值指示聊天完成模型是否为推理模型。 此选项是实验性的,与推理模型相关联,直到所有模型都具有预期属性中的奇偶校验,默认值为 false 。 |
批注
通过 TextCompletion
批注可以定义文本完成输入绑定,该绑定支持以下参数:
元素 | DESCRIPTION |
---|---|
名字 | 获取或设置输入绑定的名称。 |
提示 | 获取或设置要为其生成完成的提示,编码为字符串。 |
aiConnectionName | 可选。 获取或设置 AI 服务连接设置的配置节的名称。 对于 Azure OpenAI:如果已指定,请在此配置部分查找“终结点”和“密钥”值。 如果未指定或节不存在,请回退到环境变量:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 对于用户分配的托管标识身份验证,此属性是必需的。 对于 OpenAI 服务(非 Azure),请设置OPENAI_API_KEY环境变量。 |
chatModel | 获取或设置要用作字符串的模型的 ID,默认值为 gpt-3.5-turbo . |
温度 |
可选。 获取或设置要使用的采样温度,作为两0 者之间的字符串。2 较高的值 (0.8 ) 使输出更随机,而较低的值(如)0.2 使输出更加集中和确定性。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
topP |
可选。 获取或设置使用温度(称为核采样)作为字符串进行采样的替代方法。 在此采样方法中,模型将考虑概率质量为 top_p 标记的结果。 因此 0.1 ,仅考虑包含前 10 个% 概率质量的标记。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
maxTokens |
可选。 获取或设置在完成时要生成的最大令牌数,作为默认值为 max_tokens 的令牌计数不能超过模型的上下文长度。 除最新模型(它支持 4096 个词元)外,大多数模型的上下文长度为 2,048 个词元。 |
isReasoningModel |
可选。 获取或设置一个值,该值指示聊天完成模型是否为推理模型。 此选项是实验性的,与推理模型相关联,直到所有模型都具有预期属性中的奇偶校验,默认值为 false 。 |
修饰器
在预览期间,将输入绑定定义为 generic_input_binding
类型的 textCompletion
绑定,该绑定支持以下参数:
参数 | DESCRIPTION |
---|---|
arg_name | 表示绑定参数的变量的名称。 |
提示 | 获取或设置要为其生成完成的提示,编码为字符串。 |
ai_connection_name | 可选。 获取或设置 AI 服务连接设置的配置节的名称。 对于 Azure OpenAI:如果已指定,请在此配置部分查找“终结点”和“密钥”值。 如果未指定或节不存在,请回退到环境变量:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 对于用户分配的托管标识身份验证,此属性是必需的。 对于 OpenAI 服务(非 Azure),请设置OPENAI_API_KEY环境变量。 |
chat_model | 获取或设置要用作字符串的模型的 ID,默认值为 gpt-3.5-turbo . |
温度 |
可选。 获取或设置要使用的采样温度,作为两0 者之间的字符串。2 较高的值 (0.8 ) 使输出更随机,而较低的值(如)0.2 使输出更加集中和确定性。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
top_p |
可选。 获取或设置使用温度(称为核采样)作为字符串进行采样的替代方法。 在此采样方法中,模型将考虑概率质量为 top_p 标记的结果。 因此 0.1 ,仅考虑包含前 10 个% 概率质量的标记。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
max_tokens |
可选。 获取或设置在完成时要生成的最大令牌数,作为默认值为 max_tokens 的令牌计数不能超过模型的上下文长度。 除最新模型(它支持 4096 个词元)外,大多数模型的上下文长度为 2,048 个词元。 |
is_reasoning _model |
可选。 获取或设置一个值,该值指示聊天完成模型是否为推理模型。 此选项是实验性的,与推理模型相关联,直到所有模型都具有预期属性中的奇偶校验,默认值为 false 。 |
配置
绑定支持在 function.json 文件中设置的这些配置属性。
资产 | DESCRIPTION |
---|---|
类型 | 必须是 textCompletion 。 |
方向 | 必须是 in 。 |
名字 | 输入绑定的名称。 |
提示 | 获取或设置要为其生成完成的提示,编码为字符串。 |
aiConnectionName | 可选。 获取或设置 AI 服务连接设置的配置节的名称。 对于 Azure OpenAI:如果已指定,请在此配置部分查找“终结点”和“密钥”值。 如果未指定或节不存在,请回退到环境变量:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 对于用户分配的托管标识身份验证,此属性是必需的。 对于 OpenAI 服务(非 Azure),请设置OPENAI_API_KEY环境变量。 |
chatModel | 获取或设置要用作字符串的模型的 ID,默认值为 gpt-3.5-turbo . |
温度 |
可选。 获取或设置要使用的采样温度,作为两0 者之间的字符串。2 较高的值 (0.8 ) 使输出更随机,而较低的值(如)0.2 使输出更加集中和确定性。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
topP |
可选。 获取或设置使用温度(称为核采样)作为字符串进行采样的替代方法。 在此采样方法中,模型将考虑概率质量为 top_p 标记的结果。 因此 0.1 ,仅考虑包含前 10 个% 概率质量的标记。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
maxTokens |
可选。 获取或设置在完成时要生成的最大令牌数,作为默认值为 max_tokens 的令牌计数不能超过模型的上下文长度。 除最新模型(它支持 4096 个词元)外,大多数模型的上下文长度为 2,048 个词元。 |
isReasoningModel |
可选。 获取或设置一个值,该值指示聊天完成模型是否为推理模型。 此选项是实验性的,与推理模型相关联,直到所有模型都具有预期属性中的奇偶校验,默认值为 false 。 |
配置
绑定支持以下属性,这些属性在代码中定义:
资产 | DESCRIPTION |
---|---|
提示 | 获取或设置要为其生成完成的提示,编码为字符串。 |
aiConnectionName | 可选。 获取或设置 AI 服务连接设置的配置节的名称。 对于 Azure OpenAI:如果已指定,请在此配置部分查找“终结点”和“密钥”值。 如果未指定或节不存在,请回退到环境变量:AZURE_OPENAI_ENDPOINT和AZURE_OPENAI_KEY。 对于用户分配的托管标识身份验证,此属性是必需的。 对于 OpenAI 服务(非 Azure),请设置OPENAI_API_KEY环境变量。 |
chatModel | 获取或设置要用作字符串的模型的 ID,默认值为 gpt-3.5-turbo . |
温度 |
可选。 获取或设置要使用的采样温度,作为两0 者之间的字符串。2 较高的值 (0.8 ) 使输出更随机,而较低的值(如)0.2 使输出更加集中和确定性。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
topP |
可选。 获取或设置使用温度(称为核采样)作为字符串进行采样的替代方法。 在此采样方法中,模型将考虑概率质量为 top_p 标记的结果。 因此 0.1 ,仅考虑包含前 10 个% 概率质量的标记。 应使用任一 Temperature 或 TopP 两者,但不应同时使用两者。 |
maxTokens |
可选。 获取或设置在完成时要生成的最大令牌数,作为默认值为 max_tokens 的令牌计数不能超过模型的上下文长度。 除最新模型(它支持 4096 个词元)外,大多数模型的上下文长度为 2,048 个词元。 |
isReasoningModel |
可选。 获取或设置一个值,该值指示聊天完成模型是否为推理模型。 此选项是实验性的,与推理模型相关联,直到所有模型都具有预期属性中的奇偶校验,默认值为 false 。 |
用法
有关完整示例,请参阅示例部分。