Azure OpenAI调用Azure AI Search时,含Tag评分配置的extra_body中如何正确传递评分参数
Azure OpenAI调用Azure AI Search时,含Tag评分配置的extra_body中如何正确传递评分参数
我完全懂你现在的头疼之处——好好的查询加了默认评分配置后突然报错,要么提示缺参数,要么硬加参数又说不允许。其实问题核心就在于评分参数的传递位置和格式没找对,我来给你捋清楚怎么解决:
首先,你定义的TagScoringFunction里指定了tags_parameter="tags",这意味着Azure AI Search执行查询时,必须接收名为tags的评分参数值。但直接在extra_body的parameters里加scoringParameter是错误的,因为OpenAI的数据源参数结构中,这类Azure Search原生查询参数需要嵌套在query_parameters字段里,而且参数名是复数形式的scoringParameters(注意末尾的s)。
下面是修改后的完整代码示例,重点看新增的query_parameters部分:
client.chat.completions.create( model=os.getenv('DEPLOYMENT'), messages=messages, temperature=0.5, extra_body={ "data_sources": [{ "type": "azure_search", "parameters": { "endpoint": os.getenv('ENDPOINT'), "index_name": os.getenv('INDEX'), "semantic_configuration": os.getenv('RANK'), "query_type": "hybrid", "in_scope": True, "role_information": None, "strictness": 1, "top_n_documents": 3, "authentication": { "type": "api_key", "key": os.getenv('KEY') }, "embedding_dependency": { "type": "deployment_name", "deployment_name": os.getenv('ADA_VIT') }, # 新增:将评分参数嵌套在query_parameters中 "query_parameters": { "scoringParameters": "tags:'zinc'" } } }] } )
再给你补充几个关键细节:
query_parameters是Azure OpenAI专门用来传递Azure AI Search原生查询参数的字段,所有Search的查询级参数都可以放在这里scoringParameters的格式是参数名:'值',这里的tags要和你定义评分函数时的tags_parameter="tags"完全匹配,值就是你要匹配的"zinc"- 如果需要匹配多个标签值,格式可以写成
tags:'zinc',tags:'vitamin c',用逗号分隔即可 - 要是以后需要切换到非默认的评分配置,还可以在
query_parameters里额外添加scoringProfile:'my-scoring-profile'来指定具体的评分profile名称
这样调整后,你的默认评分配置就能正常生效,同时也不会触发参数错误了。
备注:内容来源于stack exchange,提问作者R_Student
相关产品推荐
相关产品推荐

