Spaces:
Sleeping
Sleeping
| from langchain.prompts import StringPromptTemplate | |
| import re | |
| import langchain | |
| from qa_txt import conversation_chain | |
| from key_extract import chain | |
| from bs4 import BeautifulSoup | |
| import requests | |
| from data_process import * | |
| from langchain.tools.base import StructuredTool | |
| from langchain.agents import initialize_agent | |
| from qa_txt import llm | |
| import gradio as gr | |
| from langchain.agents import ( | |
| create_react_agent, | |
| AgentExecutor, | |
| tool, | |
| ) | |
| from langchain import hub | |
| prompt = hub.pull("hwchase17/react") | |
| def faq(query: str) -> str: | |
| reponse = conversation_chain.invoke({"question": query, "chat_history": []}) | |
| return reponse['answer'] | |
| qa_faq = StructuredTool.from_function( | |
| func = faq , | |
| description=""" | |
| Repondre à des questions general . | |
| Parameters : | |
| - query (string) : the same input as the user input no more no less and dont translate it even if it is in another language. | |
| Returns : | |
| - string : the output as returned from the function in french. | |
| """ | |
| ) | |
| def request_data(query: str) -> str: | |
| request = chain.invoke({"input": query})['text'] | |
| mot_cle = nettoyer_string(request) | |
| mots = mot_cle.split() | |
| ui = mots[0] | |
| rg = chercher_data(ui) | |
| if len(rg[0]): | |
| reponse_final = format_reponse(rg) | |
| return reponse_final | |
| else: | |
| return "Désolé, il semble que nous n'ayons pas de données correspondant à votre demande pour le moment. Avez-vous une autre question ou avez-vous besoin d'aide sur quelque chose d'autre?" | |
| fetch_data = StructuredTool.from_function( | |
| func=request_data, | |
| description=""" | |
| Rechercher des données. | |
| Parameters : | |
| - query (string) : the same input as the user input no more no less and always must translate it in french if it isn't already. For example : "give me data about economy" the input is economy but need to be translated first in french and the inputed same for other languages. | |
| Returns : | |
| - string : the output as returned from the function in french. | |
| """, | |
| ) | |
| tools_add = [ | |
| qa_faq, | |
| fetch_data, | |
| ] | |
| agent = create_react_agent(llm=llm, tools=tools_add, prompt=prompt) | |
| agent_executor = AgentExecutor( | |
| agent=agent, | |
| tools=tools_add, | |
| verbose=True, | |
| ) | |
| def data_gov_ma(message, history): | |
| try: | |
| response = agent_executor.invoke({"input": message}) | |
| return response['output'] | |
| except ValueError as e: | |
| return "Je suis désolé, je n'ai pas compris votre question. Pourriez-vous la reformuler s'il vous plaît ?" | |
| gr.ChatInterface(data_gov_ma).launch() |