예제 #1
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def train(
        background_tasks: BackgroundTasks,
        current_user: User = Depends(auth.get_current_user),
):
    """ This is used to train the chatbot """
    ModelProcessor.is_training_inprogress(current_user.get_bot())
    ModelProcessor.is_daily_training_limit_exceeded(current_user.get_bot())
    background_tasks.add_task(start_training, current_user.get_bot(),
                              current_user.get_user())
    return {"message": "Model training started."}
예제 #2
0
async def set_endpoint(background_tasks: BackgroundTasks,
                       endpoint: Endpoint,
                       current_user: User = Depends(auth.get_current_user)):
    """get the bot config"""
    mongo_processor.add_endpoints(endpoint.dict(), current_user.get_bot(),
                                  current_user.get_user())

    if endpoint.action_endpoint:
        background_tasks.add_task(AgentProcessor.reload,
                                  current_user.get_bot())
    return {"message": "Endpoint saved successfully!"}
예제 #3
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def get_responses(utterance: str,
                        current_user: User = Depends(auth.get_current_user)):
    """ This function returns the list of responses for a particular utterance of the bot """
    return {
        "data":
        list(mongo_processor.get_response(utterance, current_user.get_bot()))
    }
예제 #4
0
async def search_intent(request_data: TextData,
                        current_user: User = Depends(auth.get_current_user)):
    """ This function returns the search intent of the entered text by using mongo text search"""
    search_items = list(
        mongo_processor.search_training_examples(request_data.data,
                                                 current_user.get_bot()))
    return {"data": {"searched_items": search_items}}
예제 #5
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def add_intents(request_data: TextData,
                      current_user: User = Depends(auth.get_current_user)):
    """ This function is used to add a new intent to the bot """
    id = mongo_processor.add_intent(text=request_data.data.strip(),
                                    bot=current_user.get_bot(),
                                    user=current_user.get_user())
    return {"message": "Intent added successfully!", "data": {"_id": id}}
예제 #6
0
async def chat_history_users(current_user: User = Depends(
    auth.get_current_user)):
    return {
        "data": {
            "users": ChatHistory.fetch_chat_users(current_user.get_bot())
        }
    }
예제 #7
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def set_endpoint(
        endpoint: Endpoint,
        current_user: User = Depends(auth.get_current_user),
):
    """get the bot config"""
    mongo_processor.add_endpoints(endpoint.dict(), current_user.get_bot(),
                                  current_user.get_user())
    return {"message": "Endpoint saved successfully!"}
예제 #8
0
async def chat_history_users(current_user: User = Depends(
    auth.get_current_user)):
    """ This function returns the list of the chatbot users """
    return {
        "data": {
            "users": ChatHistory.fetch_chat_users(current_user.get_bot())
        }
    }
예제 #9
0
async def get_config(current_user: User = Depends(auth.get_current_user), ):
    """
    fetch bot pipeline and polcies configurations
    :param current_user: user id
    :return: dict of configurations
    """
    config = mongo_processor.load_config(current_user.get_bot())
    return {"data": {"config": config}}
예제 #10
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def chat(request_data: TextData,
               current_user: User = Depends(auth.get_current_user)):
    """ This function returns a bot response for a given text/query. It is basically
        used to test the chat functionality of the bot """
    model = AgentProcessor.get_agent(current_user.get_bot())
    response = await model.handle_text(request_data.data,
                                       sender_id=current_user.get_user())
    return {"data": {"response": response[0]["text"] if response else None}}
예제 #11
0
async def reload_model(background_tasks: BackgroundTasks,
                       current_user: User = Depends(auth.get_current_user)):
    """
    reload model with configuration in cache
    :param current_user: user id
    :return: Model reloaded!
    """
    background_tasks.add_task(AgentProcessor.reload, current_user.get_bot())
    return {"message": "Reloading Model!"}
예제 #12
0
async def chat_history(sender: Text,
                       current_user: User = Depends(auth.get_current_user)):
    return {
        "data": {
            "history":
            list(ChatHistory.fetch_chat_history(current_user.get_bot(),
                                                sender))
        }
    }
예제 #13
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def get_story_from_intent(intent: str,
                                current_user: User = Depends(
                                    auth.get_current_user)):
    """ This function returns the utterance or response that is mapped to a particular intent """
    return {
        "data":
        mongo_processor.get_utterance_from_intent(intent,
                                                  current_user.get_bot())
    }
예제 #14
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def set_config(
        config: Config,
        current_user: User = Depends(auth.get_current_user),
):
    """set the bot config"""
    endpoint = mongo_processor.save_config(config.dict(),
                                           current_user.get_bot(),
                                           current_user.get_user())
    return {"data": {"config": endpoint}}
예제 #15
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def predict_intent(request_data: TextData,
                         current_user: User = Depends(auth.get_current_user)):
    """ This function returns the predicted intent of the entered text by using the trained
        rasa model of the chatbot """
    model = AgentProcessor.get_agent(current_user.get_bot())
    response = await model.parse_message_using_nlu_interpreter(
        request_data.data)
    intent = response.get("intent").get("name") if response else None
    confidence = response.get("intent").get("confidence") if response else None
    return {"data": {"intent": intent, "confidence": confidence}}
예제 #16
0
async def chat_history(sender: Text,
                       current_user: User = Depends(auth.get_current_user)):
    """ This function returns the chat history for a particular user of the chatbot """
    return {
        "data": {
            "history":
            list(ChatHistory.fetch_chat_history(current_user.get_bot(),
                                                sender))
        }
    }
예제 #17
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def get_training_examples(intent: str,
                                current_user: User = Depends(
                                    auth.get_current_user)):
    """ This function is used to return the training examples (questions/sentences)
        which are used to train the chatbot, for a particular intent """
    return {
        "data":
        list(
            mongo_processor.get_training_examples(intent,
                                                  current_user.get_bot()))
    }
예제 #18
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def deployment_history(current_user: User = Depends(
    auth.get_current_user)):
    """ This function is used to deploy the model of the currently trained chatbot """
    return {
        "data": {
            "deployment_history":
            list(
                mongo_processor.get_model_deployment_history(
                    bot=current_user.get_bot()))
        }
    }
예제 #19
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def add_responses(
        request_data: TextData,
        utterance: str,
        current_user: User = Depends(auth.get_current_user),
):
    """ This function adds a response to the list of responses for a particular utterance
        of the bot """
    id = mongo_processor.add_text_response(request_data.data, utterance,
                                           current_user.get_bot(),
                                           current_user.get_user())
    return {"message": "Response added successfully!", "data": {"_id": id}}
예제 #20
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def remove_responses(request_data: TextData,
                           current_user: User = Depends(
                               auth.get_current_user)):
    """ This function removes the bot response from the response list for a particular
        utterance """
    mongo_processor.remove_document(Responses, request_data.data,
                                    current_user.get_bot(),
                                    current_user.get_user())
    return {
        "message": "Response removed successfully!",
    }
예제 #21
0
async def set_config_template(request_data: TextData,
                              current_user: User = Depends(
                                  auth.get_current_user)):
    """
    apply the config template
    :param request_data: config template name
    :param current_user: user id
    :return: Config Applied!
    """
    mongo_processor.apply_config(request_data.data, current_user.get_bot(),
                                 current_user.get_user())
    return {"message": "Config applied!"}
예제 #22
0
async def get_responses(utterance: str,
                        current_user: User = Depends(auth.get_current_user)):
    """
    fetch list of utterances against utterance name
    :param utterance: utterance name
    :param current_user: loggedin user id
    :return: list of utterances
    """
    return {
        "data":
        list(mongo_processor.get_response(utterance, current_user.get_bot()))
    }
예제 #23
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def remove_training_examples(request_data: TextData,
                                   current_user: User = Depends(
                                       auth.get_current_user)):
    """ This function is used to delete a particular training example (question/sentence) from a list
        of examples for a particular intent """
    mongo_processor.remove_document(
        TrainingExamples,
        request_data.data,
        current_user.get_bot(),
        current_user.get_user(),
    )
    return {"message": "Training Example removed successfully!"}
예제 #24
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def add_training_examples(
        intent: str,
        request_data: ListData,
        current_user: User = Depends(auth.get_current_user),
):
    """ This is used to add a new training example (sentence/question) for a
        particular intent """
    results = list(
        mongo_processor.add_training_example(request_data.data, intent,
                                             current_user.get_bot(),
                                             current_user.get_user()))
    return {"data": results}
예제 #25
0
async def set_config(
        config: Config,
        current_user: User = Depends(auth.get_current_user),
):
    """
    save the bot pipeline and policies configurations
    :param config: configuration
    :param current_user: user id
    :return: Config saved!
    """
    mongo_processor.save_config(config.dict(), current_user.get_bot(),
                                current_user.get_user())
    return {"message": "Config saved!"}
예제 #26
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def upload_Files(
        background_tasks: BackgroundTasks,
        nlu: UploadFile = File(...),
        domain: UploadFile = File(...),
        stories: UploadFile = File(...),
        config: UploadFile = File(...),
        overwrite: bool = True,
        current_user: User = Depends(auth.get_current_user),
):
    """Upload training data nlu.md, domain.yml, stories.md and config.yml files"""
    await mongo_processor.upload_and_save(
        await nlu.read(),
        await domain.read(),
        await stories.read(),
        await config.read(),
        current_user.get_bot(),
        current_user.get_user(),
        overwrite,
    )
    background_tasks.add_task(start_training, current_user.get_bot(),
                              current_user.get_user())
    return {"message": "Data uploaded successfully!"}
예제 #27
0
async def get_templates(request_data: TextData,
                        current_user: User = Depends(auth.get_current_user)):
    """
    apply the use-case template
    :param request_data: use-case name
    :param current_user: user id
    :return: Data applied!
    :exception: Invalid template
    """
    await mongo_processor.apply_template(request_data.data,
                                         bot=current_user.get_bot(),
                                         user=current_user.get_user())
    return {"message": "Data applied!"}
예제 #28
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def download_data(
        background_tasks: BackgroundTasks,
        current_user: User = Depends(auth.get_current_user),
):
    """Download training data nlu.md, domain.yml, stories.md, config.yml files"""
    file = mongo_processor.download_files(current_user.get_bot())
    response = FileResponse(file,
                            filename=os.path.basename(file),
                            background=background_tasks)
    response.headers[
        "Content-Disposition"] = "attachment; filename=" + os.path.basename(
            file)
    return response
예제 #29
0
async def delete_intent(intent: str,
                        current_user: User = Depends(auth.get_current_user)):
    """
    This function will be utilized to delete an intent and
    its dependencies with TrainingExamples and Stories
    """
    intentName = mongo_processor.deleteIntentWithDependencies(
        intent, current_user.get_bot(), current_user.get_user())
    return {
        "message": "Intent successfully deleted!",
        "data": {
            "IntentName": intentName
        }
    }
예제 #30
0
파일: bot.py 프로젝트: ml-ds-data/chiron
async def add_stories(story: StoryRequest,
                      current_user: User = Depends(auth.get_current_user)):
    """ This function is used to add a story (conversational flow) to the chatbot """
    return {
        "message": "Story added successfully",
        "data": {
            "_id":
            mongo_processor.add_story(
                story.name,
                story.get_events(),
                current_user.get_bot(),
                current_user.get_user(),
            )
        },
    }