Spaces:
Sleeping
Sleeping
| from langgraph.graph import StateGraph,START,END | |
| from typing import TypedDict | |
| from langchain_openai import ChatOpenAI | |
| import os | |
| OPENAI_API_KEY=os.environ.get("OPENAI_API_KEY") | |
| llm=ChatOpenAI( | |
| model="gpt-4o-mini", | |
| api_key=OPENAI_API_KEY | |
| ) | |
| class State(TypedDict): | |
| text:str | |
| french:str | |
| spanish:str | |
| japanese:str | |
| combined_output:str | |
| def translate_french(state:State)->dict: | |
| response=llm.invoke(f"Translate the following to French:\n\n{state['text']}") | |
| return {"french":response.content.strip()} | |
| def translate_spanish(state:State)->dict: | |
| response=llm.invoke(f"Translate the following to Spanish:\n\n{state['text']}") | |
| return {"spanish":response.content.strip()} | |
| def translate_japanese(state:State)->dict: | |
| response=llm.invoke(f"Translate the following to Japanese:\n\n{state['text']}") | |
| return {"japanese":response.content.strip()} | |
| def aggregator(state:State)->dict: | |
| combined=f"Original Text: {state['text']}\n\n" | |
| combined+=f"French: {state['french']}\n\n" | |
| combined+=f"Spanish: {state['spanish']}\n\n" | |
| combined+=f"Japanese: {state['japanese']}\n" | |
| return {"combined_output":combined} | |
| graph=StateGraph(State) | |
| graph.add_node("translate_french",translate_french) | |
| graph.add_node("translate_spanish",translate_spanish) | |
| graph.add_node("translate_japanese",translate_japanese) | |
| graph.add_node("aggregator",aggregator) | |
| graph.add_edge(START,"translate_french") | |
| graph.add_edge(START,"translate_spanish") | |
| graph.add_edge(START,"translate_japanese") | |
| graph.add_edge("translate_french","aggregator") | |
| graph.add_edge("translate_spanish","aggregator") | |
| graph.add_edge("translate_japanese","aggregator") | |
| graph.add_edge("aggregator",END) | |
| app=graph.compile() | |
| def run_workflow(text): | |
| state:State={ | |
| "text":text, | |
| "french":"", | |
| "spanish":"", | |
| "japanese":"", | |
| "combined_output":"" | |
| } | |
| response=app.invoke(state) | |
| workflow_graph=app.get_graph().draw_mermaid_png() | |
| return response,workflow_graph |