You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python/Notebook调用Dialogflow API批量添加意图语句并重新训练?

Dialogflow ES 自动化批量更新训练语句并重训练实践

一、batchUpdate方法完全适用

projects.agent.intents/batchUpdate就是官方提供的批量更新意图的API方法,支持批量为多个意图添加、修改训练语句,完全匹配你的需求。

二、Python实现步骤及代码示例

环境准备

  • 安装依赖包:
    pip install google-cloud-dialogflow
    
  • 配置认证:设置环境变量GOOGLE_APPLICATION_CREDENTIALS指向你的GCP服务账号密钥JSON文件。

完整代码示例

from google.cloud import dialogflow_v2 as dialogflow
from google.protobuf import field_mask_pb2

def batch_update_intents(project_id, intent_updates):
    """批量为指定意图添加新训练语句"""
    client = dialogflow.IntentsClient()
    parent = client.project_agent_path(project_id)
    
    update_entries = []
    for intent_id, new_phrases in intent_updates.items():
        # 获取目标意图的现有配置,避免覆盖其他设置
        intent_path = client.intent_path(project_id, intent_id)
        intent = client.get_intent(intent_path)
        
        # 逐个添加新训练语句
        for phrase_text in new_phrases:
            training_phrase = dialogflow.Intent.TrainingPhrase()
            part = training_phrase.parts.add()
            part.text = phrase_text
            training_phrase.type = dialogflow.Intent.TrainingPhrase.Type.EXAMPLE
            intent.training_phrases.append(training_phrase)
        
        # 指定仅更新训练语句字段,防止误改其他配置
        update_mask = field_mask_pb2.FieldMask(paths=['training_phrases'])
        
        update_entries.append(
            dialogflow.BatchUpdateIntentsRequest.IntentBatchUpdateIntent(
                intent=intent,
                update_mask=update_mask
            )
        )
    
    # 发送批量更新请求
    request = dialogflow.BatchUpdateIntentsRequest(
        parent=parent,
        intent_batch_update_intents=update_entries
    )
    client.batch_update_intents(request)
    print("训练语句批量更新完成")

def train_agent(project_id):
    """触发智能体重训练"""
    client = dialogflow.AgentsClient()
    parent = client.project_path(project_id)
    client.train_agent(parent=parent)
    print("智能体重训练任务已启动")

if __name__ == "__main__":
    # 替换为你的项目ID
    PROJECT_ID = "your-gcp-project-id"
    # 定义需要更新的意图ID和对应的新训练语句
    intent_update_config = {
        "your-intent-id-1": ["我想查询订单物流", "帮我看看我的快递到哪了"],
        "your-intent-id-2": ["修改我的收货地址", "更新一下收件地址"]
    }
    
    # 执行批量更新
    batch_update_intents(PROJECT_ID, intent_update_config)
    # 触发重训练
    train_agent(PROJECT_ID)

三、关键注意事项

  • 服务账号权限:确保你的GCP服务账号拥有dialogflow.intents.update和dialogflow.agents.train的权限,可在IAM控制台配置。
  • 更新掩码:update_mask必须指定为training_phrases,否则会覆盖意图的其他配置(如响应、上下文等)。
  • 异步训练:重训练是异步操作,如果需要等待训练完成,可以调用get_agent_training_status方法查询状态。

内容的提问来源于stack exchange,提问作者Abiud Rds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:24:52