Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from typing import Dict, TypedDict | |
| from langgraph.graph import Graph | |
| import transformers | |
| from transformers import pipeline | |
| class AgentState(TypedDict): | |
| messages: list[str] | |
| current_step: int | |
| final_answer: str | |
| def analyze_sentiment(state: AgentState) -> AgentState: | |
| sentiment_analyzer = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") | |
| message = state["messages"][-1] | |
| result = sentiment_analyzer(message)[0] | |
| state["messages"].append(f"Sentiment analysis: {result['label']} ({result['score']:.2f})") | |
| state["current_step"] += 1 | |
| return state | |
| def generate_response(state: AgentState) -> AgentState: | |
| generator = pipeline("text-generation", model="gpt2") | |
| context = " ".join(state["messages"][-2:]) | |
| generated_text = generator(context, max_length=50, num_return_sequences=1)[0]["generated_text"] | |
| state["messages"].append(f"Generated response: {generated_text}") | |
| state["current_step"] += 1 | |
| return state | |
| def create_summary(state: AgentState) -> AgentState: | |
| if state["current_step"] >= 4: | |
| summary = "Analysis complete. Final summary: " | |
| summary += " | ".join(state["messages"]) | |
| state["final_answer"] = summary | |
| return state | |
| def build_graph(): | |
| workflow = Graph() | |
| workflow.add_node("sentiment", analyze_sentiment) | |
| workflow.add_node("generate", generate_response) | |
| workflow.add_node("summarize", create_summary) | |
| workflow.add_edge("sentiment", "generate") | |
| workflow.add_edge("generate", "summarize") | |
| workflow.add_edge("summarize", "sentiment") | |
| workflow.set_entry_point("sentiment") | |
| return workflow.compile() | |
| # Initialize the graph globally | |
| GRAPH = build_graph() | |
| def process_input(message: str, history: list) -> tuple: | |
| # Initialize state | |
| state = AgentState( | |
| messages=[message], | |
| current_step=0, | |
| final_answer="" | |
| ) | |
| # Run the graph for a few steps | |
| for _ in range(3): | |
| state = GRAPH(state) | |
| if state["final_answer"]: | |
| break | |
| # Format the conversation history | |
| conversation = "\n".join(state["messages"]) | |
| # Add final answer if available | |
| if state["final_answer"]: | |
| conversation += f"\n\nFinal Summary:\n{state['final_answer']}" | |
| return conversation | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=process_input, | |
| inputs=[ | |
| gr.Textbox(label="Enter your message"), | |
| gr.State([]) # For maintaining conversation history | |
| ], | |
| outputs=gr.Textbox(label="Analysis Results"), | |
| title="LangGraph Demo with Hugging Face", | |
| description="Enter a message to analyze sentiment and generate responses using LangGraph and Hugging Face models." | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |