使用Azure AI服务对话摘要API遇错误,求代码问题排查
Azure AI对话摘要功能代码错误排查
问题场景
运行Azure AI服务的对话摘要功能时触发代码错误,以下是相关核心调用代码与文本转JSON格式的处理代码,转换后的输出结构已符合文档要求,请求排查代码问题:
核心调用代码
# analyze query client = ConversationAnalysisClient(endpoint, AzureKeyCredential(key)) with client: poller = client.begin_conversation_analysis( task={ "displayName": "Analyze conversations from xxx", "analysisInput": { "conversations": [ { "conversationItems": json_objects_output, "modality": "text", "id": "conversation1", "language": "en" }, ] }, "tasks": [ { "taskName": "Chapter title task", "kind": "ConversationalSummarizationTask", "parameters": { "summaryAspects": ["chapterTitle"] } }, { "taskName": "Narrative task", "kind": "ConversationalSummarizationTask", "parameters": { "summaryAspects": ["narrative"] } }, ] } ) # view result result = poller.result() task_results = result["tasks"]["items"] for task in task_results: print(f"\n{task['taskName']} status: {task['status']}") task_result = task["results"] if task_result["errors"]: print("... errors occurred ...") for error in task_result["errors"]: print(error) else: conversation_result = task_result["conversations"][0] if conversation_result["warnings"]: print("... view warnings ...") for warning in conversation_result["warnings"]: print(warning) else: summaries = conversation_result["summaries"] print("... view task result ...") for summary in summaries: print(f"{summary['aspect']}: {summary['text']}")
文本转JSON格式代码
import json def convert_to_json(transcript_text): lines = transcript_text.strip().split('\n') json_objects = [] for i, line in enumerate(lines, start=1): json_obj = { "text": line.strip(), "modality": "text", "id": str(i), "role": "Speaker_1", "participantId": "Speaker_1" } json_objects.append(json_obj) return json_objects # Read transcript from text file with open('/content/input.txt', 'r') as file: transcript_text = file.read() # Convert transcript to JSON format json_objects_output=json.dumps(convert_to_json(transcript_text), indent=2) print(json_objects_output) # json dumps file with open('/content/output.json','w') as json: json.write(json_objects_output)
错误原因
json_objects_output被json.dumps()序列化为了JSON字符串,但Azure AI的begin_conversation_analysis接口中,conversationItems参数要求传入Python列表对象,而非字符串格式的JSON。API无法解析字符串格式的对话条目,因此触发错误。
修改方案
1. 调整JSON转换逻辑
保留转换后的Python列表对象,仅在需要写入文件时才进行序列化:
修改后的文本转JSON代码:
import json def convert_to_json(transcript_text): lines = transcript_text.strip().split('\n') json_objects = [] for i, line in enumerate(lines, start=1): json_obj = { "text": line.strip(), "modality": "text", "id": str(i), "role": "Speaker_1", "participantId": "Speaker_1" } json_objects.append(json_obj) return json_objects # Read transcript from text file with open('/content/input.txt', 'r') as file: transcript_text = file.read() # 保留Python列表对象,用于API调用 json_objects_output = convert_to_json(transcript_text) # 仅在写入文件时进行JSON序列化 with open('/content/output.json','w') as json_file: json.dump(json_objects_output, json_file, indent=2) # 打印输出时可选序列化 print(json.dumps(json_objects_output, indent=2))
2. 核心调用代码无需修改
确保conversationItems传入的是修改后的json_objects_output(Python列表)即可,原核心代码的结构无需调整。
验证逻辑
修改后,json_objects_output是包含对话条目的Python列表,符合Azure AI对话分析接口对conversationItems的参数要求,API可以正确解析对话内容并生成摘要。
内容的提问来源于stack exchange,提问作者JaS
相关产品推荐
相关产品推荐

