File size: 1,641 Bytes
f122d9d
965981d
a4583a7
a67fae1
9bcfd60
965981d
 
9bcfd60
113c66e
f122d9d
ee3145e
06d9c7d
4b0a157
0db12d1
f122d9d
6605617
844f26f
f122d9d
965981d
 
608bacc
965981d
10a0568
f122d9d
ee3145e
 
f122d9d
ee3145e
f122d9d
ee3145e
77460b1
ee3145e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179f5e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import gradio as gr
import os, threading

from multi_agent import run_multi_agent

lock = threading.Lock()

os.environ["LANGCHAIN_PROJECT"] = "langgraph-multi-agent"
os.environ["LANGCHAIN_TRACING_V2"] = "true"

LLM = "gpt-4.1"

def invoke(openai_api_key, topic):
    if not openai_api_key:
        raise gr.Error("OpenAI API Key is required.")
    if not topic:
        raise gr.Error("Topic is required.")
        
    with lock:
        os.environ["OPENAI_API_KEY"] = openai_api_key
        article = run_multi_agent(LLM, topic)
        del os.environ["OPENAI_API_KEY"]
        return article

def clear():
    return ""

gr.close_all()

with gr.Blocks() as assistant:
    gr.Markdown("## Multi-Agent AI: Deep Research")
    gr.Markdown(os.environ.get("DESCRIPTION"))

    with gr.Row():
        with gr.Column(scale=1):
            with gr.Row():
                openai_api_key = gr.Textbox(label = "OpenAI API Key", type = "password", lines = 1)
                topic = gr.Textbox(label = "Topic", value=os.environ["TOPIC"], lines = 1)            
            with gr.Row():
                clear_btn = gr.ClearButton(
                    components=[openai_api_key, topic]
                )
                submit_btn = gr.Button("Submit", variant="primary")
        with gr.Column(scale=3):
            article = gr.Markdown(label = "Article", value=os.environ["OUTPUT"], line_breaks = True, sanitize_html = False)

    clear_btn.click(
        fn=clear,
        outputs=article
    )
    
    submit_btn.click(
        fn=invoke,
        inputs=[openai_api_key, topic],
        outputs=article
    )

assistant.launch(mcp_server=True)