import gradio as gr from datetime import date from langchain.agents import tool from langchain.agents.agent_toolkits import create_python_agent from langchain.agents import load_tools, initialize_agent from langchain.agents import AgentType from langchain.tools.python.tool import PythonREPLTool from langchain.python import PythonREPL from langchain.chat_models import ChatOpenAI config = { "max_tokens": 1000, "model": "gpt-4", "temperature": 0, } @tool def time(text: str) -> str: """Returns todays date, use this for any \ questions related to knowing todays date. \ The input should always be an empty string, \ and this function will always return todays \ date - any date mathmatics should occur \ outside this function.""" return str(date.today()) def invoke(openai_api_key, prompt): if (openai_api_key == ""): raise gr.Error("OpenAI API Key is required.") if (prompt == ""): raise gr.Error("Prompt is required.") result = "" try: llm = ChatOpenAI(temperature=0, model="gpt-4") tools = load_tools(["llm-math","wikipedia"], llm=llm) agent= initialize_agent( tools + [time], llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, handle_parsing_errors=True, verbose = True) result = agent(prompt) #content = completion.choices[0].message.content except Exception as e: err_msg = e raise gr.Error(e) return result description = """Gradio UI using the OpenAI API with gpt-4 model.""" gr.close_all() demo = gr.Interface(fn = invoke, inputs = [gr.Textbox(label = "OpenAI API Key", type = "password", lines = 1), gr.Textbox(label = "Prompt", lines = 1)], outputs = [gr.Textbox(label = "Completion", lines = 1)], title = "Generative AI - LLM & Agent", description = description,) demo.launch()