Git Product home page Git Product logo

itriage's Introduction

iTriage

Librería para implementar un chatbot usando el motor de chequeo de síntomas Infermedica

Etapas y mensajes necesarios para implementar una máquina de estados para una entrevista vía chatbot, con el fin de realizar un pre-diagnóstico en base a síntomas. Por ahora solo disponible para COVID19.

Se utiliza la API para inferencia de Infermedica.

Pre-Requisitos

Se require crear un usuario en el portal para desarrolladores de Infermedica. Con esto se obtendra una APP-KEY y APP-ID por usuario.

Instalación

  • Se requiere Python 3.6+. Se recomienda crear un ambiente virtual.
  • Clonar repositorio e instalar librerias necesarias.
pip install -r requirements.txt

Inicio rapido

from itriage import Covid
from itriage.messages import BasicMessage

# Instanciar motor de entrevista con credenciales otorgadas por Infermedica
interview_engine = Covid(infermedica_app_id="XXX",infermedica_app_key="XXX")

# Se requiere instanciar un mensaje el cual se le pasara al motor
request = BasicMessage(user_id="<USERNAME>", _type=Types.TEXT)

While 1:

    # El motor procesara el mensaje enviado y generara una pregunta al usuario
    response = interview_engine.handle_message(request=request)
    
    # Desplegar pregunta a usuario y obtener una respuesta
    ...

    # Generar nueva consulta al motor
    # Para generar, se debe indicar el tipo de pregunta realizada. Esto 
    # se obtiene al procesar la respuesta anteriormente obtenida
    # Adicionalmente, se debe indicar el id de la pregunta realizada (Tambien
    obtenido previamente) y la respuesta obtenida de acuerdo a las opciones
    # ofrecidas

    request = BasicMessage(user_id="<USERNAME>", _type=<TYPES>)
    request.add_answer(_id=<id>, choice_id=<choice>)

Dentro de la carpeta examples se pueden encontrar una demo que simula un chat en una terminal.

Terminal

En la carpeta examples ejecutar

python main.py

Esto iniciará la conversación. Seguir las instrucciones que se desplieguen en la terminal.

Conexion con Apps

Slack

Un ejemplo de integracion a modo de bot es con Slack. Se incluye una demo en la cual se utiliza un servidor local usando Flask como backend. La conexion es mediante la API de slack. Esta habilitado para conversaciones via DM al bot.

Pre-requisitos

Configurar slack bot

  • Crear una app en Slack y agregarla al espacio de trabajo.
  • Se requiere que el backend este disponible para acceder publicamente. Una opcion es usar Ngrok para generar un tunel. Otra alternativa es montar en un servidor. Para esta demo se utilizo la primera opcion, pero para uso en produccion se debe optar por la segunda.
  • Crear un comando Slash /triage. Entregar como Request URL la direccion generada por Ngrok.
  • Revisar en el panel de control del bot (Features - OAuth & Permissions) si tiene los siguientes permisos. Si no estan, habilitarlos.

Configurar servidor local

  • pip install Flask==1.1.2
  • pip install slackclient==2.6.0
  • Agregar en examples_slack/utils/config.py las variables de acceso a la app. Se puede obtener tal cual se muestra aca.
SLACK_BOT_TOKEN = "xoxb-xxxxxxxxxxxxxxxxxxxx"
SLACK_VERIFICATION_TOKEN = "xxxxxxxxxxxxxx"
SLACK_SIGNING_SECRET = "xxxxxxxxxxxxxxxx"

Demo

Con el localhost visible publicamente, ir a examples_slack y ejecutar python server.py. Luego, desde el DM con la app, ejecutar /triage y comenzara la conversacion.

Extensiones

Para adecuar a uso personal, se debe

  • Implementar un instancia que guie la conversacion. Esta debe heredar de BaseInterview
  • Implementar estados customizados heredando de BaseState

Historial de versiones

  • 1.0.0
    • Triage covid19

Autor

Licencia

MIT License

itriage's People

Contributors

dawei22 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.