File size: 1,981 Bytes
7dae5d7
328500b
be96b46
a9baea4
b484368
0dd14f5
21d1db3
b484368
453dcab
7dae5d7
 
7dcc866
 
 
 
453dcab
 
b484368
3ad86cf
7914072
3ad86cf
6aa678c
 
b484368
1326d25
f3ed293
 
7dcc866
453dcab
3ad86cf
 
f3ed293
 
 
7dcc866
453dcab
f3ed293
03bd826
b484368
 
 
08daa84
81ef95c
41b02c8
e9b9ab3
0c29cd6
fde0c14
 
0c29cd6
1b32da6
08daa84
21d1db3
08daa84
947bb2f
b484368
8766042
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
import os, threading
import gradio as gr
from crew import run_crew
from utils import get_questions

QUESTION_FILE_PATH = "data/gaia_validation.jsonl"
QUESTION_LEVEL     = 1

def invoke(level, question, file_name, ground_truth, openai_api_key, gemini_api_key):
    if not question:
        raise gr.Error("Question is required.")

    if not openai_api_key:
        raise gr.Error("OpenAI API Key is required.")
    
    if not gemini_api_key:
        raise gr.Error("Gemini API Key is required.")

    if file_name:
        file_name = f"data/{file_name}"
    
    lock = threading.Lock()
    
    with lock:
        answer = ""

        try:
            os.environ["OPENAI_API_KEY"] = openai_api_key
            os.environ["GEMINI_API_KEY"] = gemini_api_key
            
            answer = run_crew(question, file_name)
        except Exception as e:
            raise gr.Error(e)
        finally:
            del os.environ["OPENAI_API_KEY"]
            del os.environ["GEMINI_API_KEY"]
        
        return answer

gr.close_all()

demo = gr.Interface(fn=invoke, 
                    inputs=[gr.Radio([1, 2, 3], label="Level", value=int(os.environ["INPUT_LEVEL"])),
                            gr.Textbox(label="Question *", value=os.environ["INPUT_QUESTION"]),
                            gr.Textbox(label="File Name"),
                            gr.Textbox(label="Ground Truth", value=os.environ["INPUT_GROUND_TRUTH"]),
                            gr.Textbox(label="OpenAI API Key *", type="password"),
                            gr.Textbox(label="Gemini API Key *", type="password")],
                    outputs=[gr.Textbox(label="Answer", lines=1, interactive=False, value=os.environ["OUTPUT"])],
                    title="General AI Assistant - GAIA 🤖🤝🤖",
                    description=os.environ["DESCRIPTION"],
                    examples=get_questions(QUESTION_FILE_PATH, QUESTION_LEVEL),
                    cache_examples=False
    )

demo.launch()