向 Dialogflow Agent 中的特定意图添加新话语

问题描述 投票:0回答:1

问题很简单,我在Dialogflow-es中开发了一个代理,它已经用N个意图和M个意图的话语进行了训练。 现在,我想使用 python 脚本或笔记本来自动化训练过程或部分训练过程。我想使用 Dialogflow API 将新的话语添加到代理的 N 个意图中,然后再次进行训练,但文档根本不清楚。 我已经看到了batchUpdate方法,但我不清楚这个方法是否打算做我想要的事情,也不清楚如何实现它。

这里是文档 --> GCP 意图批量更新

有人做过类似的事情吗?或者有没有API方法可以做到这一点?

提前致谢。

python google-cloud-platform dialogflow-es api-design agent
1个回答
0
投票

我终于明白了。它是通过以下两个步骤实现的:

  1. 检索当前意图和训练短语
  2. 在之前的意图和训练短语中添加新的意图和训练短语。

虽然有一个 GCP 库可以做到这一点,但我想使用请求来实现这两个步骤,以使代码尽可能不可知。

这是第一步和第二步的代码。

第一步:

url = "https://ValidURL/agent/intents"
headers = {
    "Authorization": token,
    "Content-Type": "application/json",
    "x-goog-user-project": "valid-project-name"
}

params = {'intentView': "INTENT_VIEW_FULL"}

while has_next_page:
    if next_page_token:
        params['pageToken'] = next_page_token
        
    response = requests.get(url, headers=headers, params=params)
    response_json = response.json()

    if response.status_code == 200:
        intents = response_json.get('intents', [])
        all_display_names.extend([intent['displayName'] for intent in intents])
        all_responses.extend([intent for intent in intents])
        
        next_page_token = response_json.get('nextPageToken')  
        has_next_page = bool(next_page_token)
    else:
        print("Error", response.status_code)
        break

第二步:

url = "https://validUrL/agents/intents:batchUpdate"
headers = {
    "Authorization": token,
    "x-goog-user-project": "project_name"
}

# Building body part
body = {
    "updateMask":{"paths": ["training_phrases"]},
    "intentView": "INTENT_VIEW_FULL",
    "intentBatchInline": {
        "intents": [
            {
                "name": f"Project_name/agent/intents/{intent_id}",
                "display_name": display_name,
                "trainingPhrases": new_training_phrases,
                "languageCode":"es"
            }
        ]
    }
}

# post the new training phrases
response = requests.post(url, headers=headers, json=body)


if response.status_code == 200:
    print("Success.")
else:
    print("Error:", response.status_code)
    print(response.text)
© www.soinside.com 2019 - 2024. All rights reserved.