python dialogflow_v2 非常慢

python dialogflow_v2 is extremely slow

最佳,

目前我正在试验 dialogflow_v2 包,我不得不说,它在大多数情况下都非常慢。
太慢了,我怀疑放弃这艘船并寻找另一个聊天机器人-api.

基本上我正在做的是:

我加载包:

import dialogflow_v2
from google.oauth2 import service_account

我从我的 服务帐户 json 文件

创建我的凭据
cred_loc = 'first-planet-****************.json'
cred = service_account.Credentials.from_service_account_file(cred_loc)

我创建了,agents_client,intents_client,entity_types_client

agents_client = dialogflow_v2.AgentsClient(credentials = cred)
agents_parent = agents_client.project_path(cred._project_id)

intents_client = dialogflow_v2.IntentsClient(credentials = cred)
intents_parent = intents_client.project_agent_path(cred.project_id)

entity_types_client = dialogflow_v2.EntityTypesClient(credentials = cred)
entity_types_parent = entity_types_client.project_agent_path(cred.project_id)

然后痛苦开始了:

搜索代理需要 24 秒

agents = []
for s in agents_client.search_agents(agents_parent).pages:
    try:
        agents.append(s.next())
    except:
        pass

列出意图需要 36 秒

intents_name_to_id = {}
for element in intents_client.list_intents(intents_parent, intent_view='INTENT_VIEW_FULL'):
    intents_name_to_id[element.display_name] = element.name

列出实体类型需要 33 秒

entity_name_to_id = {}
for element in entity_types_client.list_entity_types(entity_types_parent):
    entity_name_to_id[element.display_name] = element.name

并不是说它是一个大项目,相反,它是一个新项目,有 1 个代理、2 个意图和 2 个实体类型...

因此我的问题是:

  1. 这是一个错误吗?
  2. 是因为我使用的是非企业(免费)许可证吗?
  3. 是因为我设置连接的方式吗? (服务帐户文件?)

对我来说,好像不能做错那么多...

另外,当我通过云做同样的事情时...dialogflow.docs 网站:

https://cloud.google.com/dialogflow/docs/reference/rest/v2/projects.agent.intents/list?apix_params=%7B%22parent%22%3A%22projects%2Ffirst-planet-268313%2Fagent%22%7D

然后它工作了,非常好......(我在 1-2 秒内收到回复)

亲切的问候


EDIT/EXTRA:
当我在没有 dialogflow_v2 的情况下做同样的事情时,它同样慢 ...

from google.oauth2 import service_account
import google.auth.transport.requests

cred_loc = 'first-planet-****.json'
SCOPES = ['https://www.googleapis.com/auth/dialogflow']
cred = service_account.Credentials.from_service_account_file(cred_loc,scopes=SCOPES)


cred.refresh(google.auth.transport.requests.Request())
parent = f'projects/{cred.project_id}'
header = {'Authorization': 'Bearer ' + cred.token}
search = requests.get(f'https://content-dialogflow.googleapis.com/v2/{parent}/agent:search', headers=header)
json.loads(search.content)

因此,dialogflow_v2和通过请求的共同点是服务帐户文件(两种方法都很慢),而云...dialogflow.docs网站使用oauth2方法...

  • 如果您觉得这个问题很熟悉,那么您可能遇到了网络问题。尝试连接到另一个 Wi-Fi-network 或移动热点。然后应该就解决了....