Este é um projeto de um chatbot simples baseado em Python que utiliza o Azure LUIS (Language Understanding Intelligent Service) para identificar intenções e extrair entidades de mensagens fornecidas pelos usuários.
O chatbot é projetado para interpretar mensagens e identificar a intenção do usuário com base em um modelo treinado no Azure LUIS. Ele exibe a intenção identificada, bem como as entidades detectadas, e registra todas as interações em um arquivo de log.
Este é um projeto de um chatbot simples baseado em Python que utiliza o Azure LUIS (Language Understanding Intelligent Service) para identificar intenções e extrair entidades de mensagens fornecidas pelos usuários.
O chatbot é projetado para interpretar mensagens e identificar a intenção do usuário com base em um modelo treinado no Azure LUIS. Ele exibe a intenção identificada, bem como as entidades detectadas, e registra todas as interações em um arquivo de log.
pip install -r requirements.txt`
.env
na raiz do projeto:APP_ID=seu-app-id-aqui PREDICTION_KEY=sua-chave-de-api-aqui ENDPOINT=seu-endpoint-aqui
Execute o script principal:
python app.py
Você: Qual será o tempo amanhã?
sair
.app.py
logs/logChatbot.log
..env
.obter_intencao
processa mensagens no LUIS e retorna as intenções e entidades.app.py
O arquivo app.py
é o código principal do chatbot. Ele integra o Azure LUIS com o Python, gerencia as entradas do usuário e registra as interações em um arquivo de log. Vamos explorar as principais partes do código:
`LOG_DIR = "logs"` `LOG_FILE = os.path.join(LOG_DIR, "logChatbot.log")` `os.makedirs(LOG_DIR, exist_ok=True)` `logging.basicConfig(` `level=logging.INFO,` `format="%(asctime)s - %(levelname)s - %(message)s",` `handlers=[` `logging.FileHandler(LOG_FILE, encoding="utf-8"),` `logging.StreamHandler() # Também exibe logs no console` `]` `)` `logger = logging.getLogger(__name__)`
logs
para armazenar os arquivos de log, caso ele não exista.logChatbot.log
é gerado dentro dessa pasta, e ele registra todas as mensagens (info, erro, etc.).`if load_dotenv():` `logger.info("Variáveis de ambiente carregadas com sucesso.")` `else:` `logger.error("Erro ao carregar as variáveis de ambiente. Verifique o arquivo .env.")`
.env
..env
contém configurações sensíveis, como o APP_ID, PREDICTION_KEY e ENDPOINT do serviço LUIS. O código usa a biblioteca python-dotenv
para carregar essas variáveis.`APP_ID = os.getenv("APP_ID")` `PREDICTION_KEY = os.getenv("PREDICTION_KEY")` `ENDPOINT = os.getenv("ENDPOINT")` `if not all([APP_ID, PREDICTION_KEY, ENDPOINT]):` `logger.critical("Uma ou mais variáveis do .env não foram encontradas. Verifique o arquivo .env.")` `exit(1)`
`try:` `client = LUISRuntimeClient(endpoint=ENDPOINT, credentials=CognitiveServicesCredentials(PREDICTION_KEY))` `logger.info("Cliente LUIS inicializado com sucesso.")` `except Exception as e:` `logger.critical(f"Erro ao inicializar o cliente LUIS: {e}")` `exit(1)`
`def obter_intencao(mensagem):` `try:` `response = client.prediction.resolve(APP_ID, query=mensagem)` `intent = response.top_scoring_intent.intent` `entities = [(e.entity, e.type) for e in response.entities]` `logger.info(f"Mensagem processada com sucesso. Intenção: {intent}, Entidades: {entities}")` `return intent, entities` `except Exception as e:` `logger.error(f"Erro ao processar a mensagem no LUIS: {e}")` `return "Erro", []`
resolve()
.`if __name__ == "__main__":` `logger.info("Chatbot iniciado. Digite sua mensagem ou 'sair' para encerrar.")` `while True:` `user_input = input("Você: ")` `if user_input.lower() == "sair":` `logger.info("Chatbot encerrado pelo usuário.")` `break` `intent, entities = obter_intencao(user_input)` `print(f"Intenção: {intent}")` `print(f"Entidades: {entities}")`
obter_intencao
para processar a entrada e retorna a intenção e as entidades.O Language Understanding Intelligent Service (LUIS) é uma API de inteligência artificial da Microsoft que usa processamento de linguagem natural (NLP) para identificar intenções e extrair informações de mensagens em linguagem natural.
Greeting
pode indicar uma saudação, como "Olá!".Todos os eventos, sucessos e erros são registrados no arquivo:
logs/logChatbot.log * **Exemplo de Log:** 2024-12-23 10:30:00 - INFO - Cliente LUIS inicializado com sucesso. 2024-12-23 10:31:00 - INFO - Mensagem processada com sucesso. Intenção: WeatherQuery, Entidades: [('tempo', 'consulta')]` *
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para mais detalhes.
There are no datasets linked
There are no datasets linked