问题很简单,我在Dialogflow-es中开发了一个代理,它已经用N个意图和M个意图的话语进行了训练。 现在,我想使用 python 脚本或笔记本来自动化训练过程或部分训练过程。我想使用 Dialogflow API 将新的话语添加到代理的 N 个意图中,然后再次进行训练,但文档根本不清楚。 我已经看到了batchUpdate方法,但我不清楚这个方法是否打算做我想要的事情,也不清楚如何实现它。
这里是文档 --> GCP 意图批量更新
有人做过类似的事情吗?或者有没有API方法可以做到这一点?
提前致谢。
我终于明白了。它是通过以下两个步骤实现的:
虽然有一个 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)