datacipen commited on
Commit
41ad8c9
·
verified ·
1 Parent(s): 3490c6d

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +17 -8
main.py CHANGED
@@ -12,7 +12,11 @@ from langchain_core.prompts import ChatPromptTemplate
12
 
13
  from langchain.agents import AgentExecutor
14
  from langchain.agents.agent_types import AgentType
15
- from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent, create_csv_agent
 
 
 
 
16
 
17
  import chainlit as cl
18
  from chainlit.input_widget import TextInput, Select, Switch, Slider
@@ -45,13 +49,13 @@ def auth_callback(username: str, password: str):
45
  @cl.step(type="run")
46
  def create_agent(filename: str):
47
  """
48
- Create an agent that can access and use a large language model (LLM).
49
 
50
  Args:
51
- filename: The path to the CSV file that contains the data.
52
 
53
  Returns:
54
- An agent that can access and use the LLM.
55
  """
56
 
57
  # Create an OpenAI object.
@@ -60,9 +64,13 @@ def create_agent(filename: str):
60
  #llm = OpenAI(temperature=0, model_name="gpt-4")
61
  # Read the CSV file into a Pandas DataFrame.
62
  df = pd.read_csv(filename)
63
-
64
- # Create a Pandas DataFrame agent.
65
- return create_pandas_dataframe_agent(llm, df, verbose=False, allow_dangerous_code=True, handle_parsing_errors=True, agent_type=AgentType.OPENAI_FUNCTIONS)
 
 
 
 
66
 
67
  def query_agent(agent, query):
68
  """
@@ -182,7 +190,8 @@ async def on_message(message: cl.Message):
182
  cb = cl.AsyncLangchainCallbackHandler()
183
  try:
184
  #res = await agent.acall("Réponds en langue française à la question suivante : " + message.content, callbacks=[cb])
185
- res = await agent.ainvoke("Réponds de la manière la plus complète et la plus intelligible, en langue française, à la question suivante : " + message.content + ". Réponds au format markdown ou au format tableau si le résultat nécessite l'affichage d'un tableau.")
 
186
  await cl.Message(author="COPILOT",content=GoogleTranslator(source='auto', target='fr').translate(res['output'])).send()
187
  except ValueError as e:
188
  res = str(e)
 
12
 
13
  from langchain.agents import AgentExecutor
14
  from langchain.agents.agent_types import AgentType
15
+ #from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent, create_csv_agent
16
+ from langchain_community.agent_toolkits import create_sql_agent
17
+
18
+ from langchain_community.utilities import SQLDatabase
19
+ from sqlalchemy import create_engine
20
 
21
  import chainlit as cl
22
  from chainlit.input_widget import TextInput, Select, Switch, Slider
 
49
  @cl.step(type="run")
50
  def create_agent(filename: str):
51
  """
52
+ Créer un agent qui permet l'accès et l'usage d'un large language model (LLM).
53
 
54
  Args:
55
+ filename: le chemin du fichier CSV qui contient les datas.
56
 
57
  Returns:
58
+ Un agent qui peut accéder et utiliser le LLM.
59
  """
60
 
61
  # Create an OpenAI object.
 
64
  #llm = OpenAI(temperature=0, model_name="gpt-4")
65
  # Read the CSV file into a Pandas DataFrame.
66
  df = pd.read_csv(filename)
67
+ engine = create_engine("sqlite:///sphinx.db")
68
+ df.to_sql("sphinx", engine, index=False)
69
+ db = SQLDatabase(engine=engine)
70
+ # Create a SAL agent.
71
+ #e.g agent_executor.invoke({"input": "Quel est le nombre de chargé d'affaires en agencement par entreprise?"})
72
+ #return create_pandas_dataframe_agent(llm, df, verbose=False, allow_dangerous_code=True, handle_parsing_errors=True, agent_type=AgentType.OPENAI_FUNCTIONS)
73
+ return create_sql_agent(llm, db=db, agent_type="openai-tools", verbose=False)
74
 
75
  def query_agent(agent, query):
76
  """
 
190
  cb = cl.AsyncLangchainCallbackHandler()
191
  try:
192
  #res = await agent.acall("Réponds en langue française à la question suivante : " + message.content, callbacks=[cb])
193
+ res = await agent.ainvoke({"input": "Réponds de la manière la plus complète et la plus intelligible, en langue française, à la question suivante : " + message.content + ". Réponds au format markdown ou au format tableau si le résultat nécessite l'affichage d'un tableau."})
194
+ #res = await agent.ainvoke("Réponds de la manière la plus complète et la plus intelligible, en langue française, à la question suivante : " + message.content + ". Réponds au format markdown ou au format tableau si le résultat nécessite l'affichage d'un tableau.")
195
  await cl.Message(author="COPILOT",content=GoogleTranslator(source='auto', target='fr').translate(res['output'])).send()
196
  except ValueError as e:
197
  res = str(e)