datahoot / app.py
shlomihod
initial commit
ba1afb2
# https://python.langchain.com/docs/integrations/toolkits/csv
import os
from pathlib import Path
import streamlit as st
from langchain.agents import create_csv_agent
from langchain.agents.agent_types import AgentType
from langchain.chat_models import ChatOpenAI
from langchain.llms.openai import OpenAI
OPENAI_API_KEY = st.secrets.get("openai_api_key", None)
MODEL_NAME = "gpt-3.5-turbo-0613"
DATA_PATH = Path("data")
CSV_PATH = DATA_PATH / "dataset.csv"
METADATA_PATH = DATA_PATH / "metadata.md"
METADATA = METADATA_PATH.read_text()
llm = ChatOpenAI(model_name=MODEL_NAME, openai_api_key=OPENAI_API_KEY, temperature=0)
agent = create_csv_agent(
llm=llm,
path=str(CSV_PATH),
verbose=True,
agent_type=AgentType.OPENAI_FUNCTIONS,
prefix=METADATA,
)
# agent_executor = create_sql_agent(
# llm=llm,
# toolkit=toolkit,
# verbose=True,
# agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
# )
st.title("💬 Dataoot")
if "messages" not in st.session_state:
st.session_state["messages"] = []
for msg in st.session_state.messages:
st.chat_message(msg["role"]).write(msg["content"])
if prompt := st.chat_input():
st.session_state.messages.append({"role": "user", "content": prompt})
st.chat_message("user").write(prompt)
response = agent.run(prompt)
st.session_state.messages.append({"role": "assistant", "content": response})
st.chat_message("assistant").write(response)