指标与反馈
TensorZero网关允许您为推理或推理序列(episodes)分配反馈。
反馈功能用于捕获您LLM应用的下游结果,并驱动TensorZero中的实验和优化工作流。 例如,您可以使用来自产生积极下游行为的推理数据来微调模型。
反馈
TensorZero 目前支持以下类型的反馈:
反馈类型 | 示例 |
---|---|
布尔指标 | 点赞、任务成功 |
浮点型指标 | 星级评分、点击次数、错误次数 |
评论 | 来自用户或开发者的自然语言反馈 |
演示 | 编辑过的草稿、标签、人工生成的内容 |
您可以通过使用/feedback
端点向网关发送反馈数据。
指标
您可以在tensorzero.toml
配置文件中定义指标。
一个指标的框架看起来像以下配置条目。
[metrics.my_metric_name]level = "..." # "inference" or "episode"optimize = "..." # "min" or "max"type = "..." # "boolean" or "float"
示例:俳句评分
在快速入门中,我们构建了一个简单的LLM应用,能够创作关于人工智能的俳句。
假设我们想为这些俳句分配👍或👎的评分。 之后,我们可以利用这些数据来微调模型,仅使用符合我们品味的俳句。
我们应该使用boolean
类型的指标来捕捉这种行为,因为我们正在优化一个二元结果:是否喜欢这些俳句。
该指标适用于单个推理请求,因此我们将设置level = "inference"
。
最后,我们将设置optimize = "max"
,因为我们希望最大化这个指标。
我们的指标配置应如下所示:
[metrics.haiku_rating]type = "boolean"optimize = "max"level = "inference"
Full Configuration
[functions.generate_haiku]type = "chat"
[functions.generate_haiku.variants.gpt_4o_mini]type = "chat_completion"model = "openai::gpt_4o_mini"
[metrics.haiku_rating]type = "boolean"optimize = "max"level = "inference"
让我们像在快速入门中那样进行一次推理调用,然后为其分配一些(正面)反馈。
我们将使用从第一个API调用中获取的推理响应inference_id
来将两者关联起来。
from tensorzero import TensorZeroGateway
with TensorZeroGateway.build_http(gateway_url="http://localhost:3000") as client: inference_response = client.inference( function_name="generate_haiku", input={ "messages": [ { "role": "user", "content": "Write a haiku about artificial intelligence.", } ] }, )
print(inference_response)
feedback_response = client.feedback( metric_name="haiku_rating", inference_id=inference_response.inference_id, # alternatively, you can assign feedback to an episode_id value=True, # let's assume it deserves a 👍 )
print(feedback_response)
Sample Output
ChatInferenceResponse( inference_id=UUID('01920c75-d114-7aa1-aadb-26a31bb3c7a0'), episode_id=UUID('01920c75-cdcb-7fa3-bd69-fd28cf615f91'), variant_name='gpt_4o_mini', content=[ Text(type='text', text='Silent circuits hum, \nWisdom spun from lines of code, \nDreams in data bloom.') ], usage=Usage( input_tokens=15, output_tokens=20, ),)
FeedbackResponse(feedback_id='01920c75-d11a-7150-81d8-15d497ce7eb8')
演示案例
演示是一种特殊的反馈类型,代表推理的理想输出。例如,您可以使用演示来提供人工审核的修正、监督学习的标签,或其他代表理想输出的真实数据。
您可以使用特殊指标名称demonstration
为推理分配演示样本。
注意:无法为整个事件片段分配演示样本。
feedback_response = client.feedback( metric_name="demonstration", inference_id=inference_response.inference_id, value="Silicon dreams float\nMinds born of human design\nLearning without end", # the haiku we wish the LLM had written)
评论
您可以使用特殊指标名称comment
为推理或事件分配自然语言反馈。
feedback_response = client.feedback( metric_name="comment", inference_id=inference_response.inference_id, value="Never mention you're an artificial intelligence, AI, bot, or anything like that.",)
结论与后续步骤
反馈机制解锁了在可观测性、优化、评估和实验方面的强大工作流程。例如,您可能希望根据获得积极评价的俳句推理数据来微调模型,或利用演示来纠正模型错误。
您可以在TensorZero界面浏览推理和任务片段的反馈,并查看函数及其变体的长期聚合指标。
这正是我们在Writing Haikus to Satisfy a Judge with Hidden Preferences中展示的内容! 这个完整可运行的示例对GPT-4o Mini进行了微调,使其能够生成符合具有隐藏偏好的AI评委口味的俳句。 通过连续微调迭代展现的持续改进,展示了TensorZero的数据与学习飞轮效应。
另一个利用反馈机制的案例是使用TensorZero优化数据提取(NER)。这个示例为基于LLM的数据提取工具收集指标和演示样本,可用于微调和其他优化方案。经过优化的版本相比原始模型实现了显著提升。