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() |