import os import asyncio # Init with fake key if 'OPENAI_API_KEY' not in os.environ: os.environ['OPENAI_API_KEY'] = 'none' os.environ["OPENAI_API_BASE"] = 'none' os.environ["SERP_API_KEY"] = 'none' os.environ["SEMANTIC_SCHOLAR_API_KEY"] = 'none' if os.name == 'nt': asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) import openai import pandas as pd import streamlit as st from PIL import Image from agent import TeLLAgent, make_tools from streamlit_callback_handler import \ StreamlitCallbackHandlerChem import base64 import pandas as pd from dotenv import load_dotenv from langchain_openai import ChatOpenAI , OpenAI import base64 from io import BytesIO from PIL import Image import tempfile def convert_to_base64(pil_image): buffered = BytesIO() pil_image.save(buffered, format="PNG") img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") return img_str def oai_key_isvalid(api_key): """Check if a given OpenAI key is valid""" try: if os.getenv("OPENAI_API_BASE"): llm = ChatOpenAI(openai_api_key = api_key, base_url=os.getenv("OPENAI_API_BASE")) out = llm.invoke("This is a test") else: llm = ChatOpenAI(openai_api_key = api_key) out = llm.invoke("This is a test") return True except: return False load_dotenv() ss = st.session_state ss.prompt = None if 'pending_prompt' not in st.session_state: st.session_state.pending_prompt = None # Set width of sidebar st.markdown( """