重要
适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。
通过 Azure OpenAI 助手发布输入绑定,可向助手聊天机器人发送提示。
如需了解有关 Azure OpenAI 扩展的设置和配置详细信息,请参阅适用于 Azure Functions 的 Azure OpenAI 扩展。 若要了解有关 Azure OpenAI 助手的详细信息,请参阅 Azure OpenAI 助手 API。
注意
仅提供了适用于 Node.js v4 模型的参考和示例。
注意
仅提供了适用于 Python v2 模型的参考和示例。
注意
虽然支持这两个 C# 进程模型,但仅 提供了独立的辅助角色模型 示例。
示例
此示例演示了创建过程,过程中 HTTP POST 函数将用户提示发送到助手聊天机器人。 对提示的回复在 HTTP 响应中返回。
/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}
此示例演示了创建过程,过程中 HTTP POST 函数将用户提示发送到助手聊天机器人。 对提示的回复在 HTTP 响应中返回。
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
List<AssistantMessage> recentMessages = state.getRecentMessages();
String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response)
.build();
}
此示例演示了创建过程,过程中 HTTP POST 函数将用户提示发送到助手聊天机器人。 对提示的回复在 HTTP 响应中返回。
const { app, input, output } = require("@azure/functions");
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState: any = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
此示例演示了创建过程,过程中 HTTP POST 函数将用户提示发送到助手聊天机器人。 对提示的回复在 HTTP 响应中返回。
下面是 发布用户查询的function.json 文件:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "assistants/{assistantId}",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "State",
"type": "assistantPost",
"direction": "in",
"dataType": "string",
"id": "{assistantId}",
"userMessage": "{Query.message}",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"chatStorageConnectionSetting": "AzureWebJobsStorage",
"collectionName": "ChatState"
}
]
}
有关 function.json 文件属性的详细信息,请参阅配置部分。
using namespace System.Net
param($Request, $TriggerMetadata, $State)
$recent_message_content = "No recent messages!"
if ($State.recentMessages.Count -gt 0) {
$recent_message_content = $State.recentMessages[0].content
}
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $recent_message_content
Headers = @{
"Content-Type" = "text/plain"
}
})
此示例演示了创建过程,过程中 HTTP POST 函数将用户提示发送到助手聊天机器人。 对提示的回复在 HTTP 响应中返回。
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
arg_name="state",
id="{assistantId}",
user_message="{Query.message}",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
# Parse the JSON string into a dictionary
data = json.loads(state)
# Extract the content of the recentMessage
recent_message_content = data["recentMessages"][0]["content"]
return func.HttpResponse(
recent_message_content, status_code=200, mimetype="text/plain"
)
特性
应用 PostUserQuery
特性以定义助手发布输入绑定,该绑定支持以下参数:
参数 | 说明 |
---|---|
Id | 要更新的助手的 ID。 |
UserMessage | 获取或设置聊天完成模型的用户消息,编码为字符串。 |
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 。 |
批注
通过 PostUserQuery
注释,可定义助手发布输入绑定,该绑定支持以下参数:
元素 | 说明 |
---|---|
名字 | 输出绑定的名称。 |
id | 要更新的助手的 ID。 |
userMessage | 获取或设置聊天完成模型的用户消息,编码为字符串。 |
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_output_binding
类型的 postUserQuery
绑定,该绑定支持以下参数:
参数 | 说明 |
---|---|
arg_name | 表示绑定参数的变量的名称。 |
id | 要更新的助手的 ID。 |
user_message | 获取或设置聊天完成模型的用户消息,编码为字符串。 |
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 文件中设置的这些配置属性。
properties | 说明 |
---|---|
type | 必须是 PostUserQuery 。 |
方向 | 必须是 out 。 |
名字 | 输出绑定的名称。 |
id | 要更新的助手的 ID。 |
userMessage | 获取或设置聊天完成模型的用户消息,编码为字符串。 |
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 。 |
配置
绑定支持以下属性,这些属性在代码中定义:
properties | 说明 |
---|---|
id | 要更新的助手的 ID。 |
userMessage | 获取或设置聊天完成模型的用户消息,编码为字符串。 |
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 。 |
使用情况
有关完整示例,请参阅示例部分。