Spaces:
Build error
Build error
| import pandas as pd | |
| import streamlit as st | |
| from operator import itemgetter | |
| from langchain.chains.openai_tools import create_extraction_chain_pydantic | |
| from langchain_core.pydantic_v1 import BaseModel, Field | |
| from langchain_openai import ChatOpenAI | |
| from typing import List | |
| class Table(BaseModel): | |
| """Table in SQL database.""" | |
| name: str = Field(description="Name of table in SQL database.") | |
| def get_tables(tables: List[Table]) -> List[str]: | |
| return [table.name for table in tables] | |
| def get_table_details(): | |
| try: | |
| table_description = pd.read_excel("database_table_descriptions.xlsx") | |
| table_details = "" | |
| for index, row in table_description.iterrows(): | |
| table_details += f"Table Name:{row['Table']}\nTable Description:{row['Description']}\n\n" | |
| return table_details | |
| except Exception as e: | |
| st.error(f"Error reading table descriptions: {str(e)}") | |
| return "" | |
| def create_table_chain(api_key): | |
| table_details = get_table_details() | |
| table_details_prompt = f"""Return the names of ALL the SQL tables that MIGHT be relevant to the user question. \ | |
| The tables are: | |
| {table_details} | |
| Remember to include ALL POTENTIALLY RELEVANT tables, even if you're not sure that they're needed.""" | |
| llm = ChatOpenAI(temperature=0.7, model="gpt-3.5-turbo", api_key=api_key) | |
| return ( | |
| {"input": itemgetter("question")} | | |
| create_extraction_chain_pydantic(Table, llm, system_message=table_details_prompt) | | |
| get_tables | |
| ) |