Spaces:
Paused
Paused
| from langchain_openai import ChatOpenAI | |
| import os | |
| from langchain_core.messages import HumanMessage | |
| from langchain_core.runnables import chain | |
| from langchain.prompts.chat import ChatPromptTemplate | |
| from langchain_core.pydantic_v1 import BaseModel, Field | |
| from langchain_core.output_parsers import JsonOutputParser | |
| os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") | |
| email_prompt = """ | |
| You are an email writer. Use the following input to draft an email: | |
| Input: {input} | |
| Deliver: | |
| 1. A complete email. | |
| """ | |
| class Email(BaseModel): | |
| email: str = Field(description= "email") | |
| email_parser = JsonOutputParser(pydantic_object=Email) | |
| def email_model(inputs: dict) -> str | list[str] | dict: | |
| model = ChatOpenAI(temperature=0.5, model="gpt-4o", max_tokens=1024) | |
| msg = model.invoke( | |
| [HumanMessage( | |
| content=[ | |
| {"type": "text", "text": inputs["prompt"]}, | |
| {"type": "text", "text": inputs["parser"].get_format_instructions()}, | |
| ])] | |
| ) | |
| return msg.content | |
| def get_email(user_input) -> dict: | |
| parser = email_parser | |
| prompt = email_prompt.format(input=user_input) | |
| intent_chain = email_model | parser | |
| return intent_chain.invoke({'prompt': prompt, 'parser':parser}) | |
| import gradio as gr | |
| def process_text(input_text): | |
| output = get_email(input_text) | |
| return output["email"] | |
| # Create the Gradio interface | |
| interface = gr.Interface( | |
| fn=process_text, # Function to process the text | |
| inputs=gr.Textbox(label = "Email Instructions"), # Textbox input for the user | |
| outputs=gr.Textbox(label = "Email"), # Textbox output for the response | |
| title="Email Writer", # Title of the app | |
| # description="Enter email instructions" | |
| ) | |
| # Launch the app | |
| interface.launch() | |