python dialogflow_v2 очень медленно - PullRequest
0 голосов
/ 17 февраля 2020

Best,

В данный момент я экспериментирую с пакетом dialogflow_v2 и должен сказать, что в большинстве случаев он очень медленный.
Настолько медленный, что я сомневаюсь покинуть этот корабль и искать другой chatbot-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, intets_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 секунд )

С уважением


РЕДАКТИРОВАТЬ / ДОПОЛНИТЕЛЬНО:
Когда я делаю то же самое без 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 ...

...