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

Dialogflow调用list_intents/get_intent无法返回训练短语求助

Dialogflow Python SDK获取训练短语为空的解决方案

问题描述

我尝试用Python获取Dialogflow中每个Intent的训练短语概览,按照官方示例编写代码后,Intent的名称和显示名能正常输出,但training_phrases始终是空列表(草稿和测试环境均是如此),而在控制台中明明能看到对应的训练短语。后续改用get_intent接口重新获取Intent详情,结果依然输出Training phrases: []。

问题原因

Dialogflow的list_intents接口默认只返回Intent的基础元数据(如名称、显示名),不会包含训练短语这类详细字段;即使是get_intent接口,默认也仅返回基础字段,需要显式指定要获取的字段范围才能拿到训练短语。

解决代码

修改get_intent的请求参数,通过intent_view指定需要获取完整的Intent信息:

from google.cloud import dialogflow_v2

# get_credentials 是自定义加载凭证的函数
credentials, project_id = get_credentials()

client = dialogflow_v2.IntentsClient(credentials=credentials)

request = dialogflow_v2.ListIntentsRequest(
    parent=f"projects/{project_id}/agent/environments/draft",
)
page_result = client.list_intents(request=request)

for intent in page_result:
    print("Intent name: ", intent.name)
    # 指定intent_view为INTENT_VIEW_FULL,获取完整Intent数据
    intent_request = dialogflow_v2.GetIntentRequest(
        name=intent.name,
        intent_view=dialogflow_v2.IntentView.INTENT_VIEW_FULL
    )
    intent = client.get_intent(request=intent_request)
    
    print("Intent name: ", intent.name)
    print("Intent display_name: ", intent.display_name)
    print("Training phrases: ", intent.training_phrases)

可选优化

如果只需要训练短语,无需其他额外字段,可以将intent_view设置为IntentView.INTENT_VIEW_INCLUDE_TRAINING_PHRASES,这样能减少返回的数据量,提升请求效率:

intent_request = dialogflow_v2.GetIntentRequest(
    name=intent.name,
    intent_view=dialogflow_v2.IntentView.INTENT_VIEW_INCLUDE_TRAINING_PHRASES
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:33:30