Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -9,24 +9,45 @@ from swiftsage.agents import SwiftSage
|
|
| 9 |
from swiftsage.utils.commons import PromptTemplate, api_configs, setup_logging
|
| 10 |
from pkg_resources import resource_filename
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
# Configuration for each LLM
|
| 14 |
max_iterations = int(max_iterations)
|
| 15 |
reward_threshold = int(reward_threshold)
|
| 16 |
|
| 17 |
swift_config = {
|
| 18 |
"model_id": swift_model_id,
|
| 19 |
-
"api_config": api_configs[
|
|
|
|
|
|
|
|
|
|
| 20 |
}
|
| 21 |
|
| 22 |
-
|
| 23 |
"model_id": feedback_model_id,
|
| 24 |
-
"api_config": api_configs[
|
|
|
|
|
|
|
|
|
|
| 25 |
}
|
| 26 |
|
| 27 |
sage_config = {
|
| 28 |
"model_id": sage_model_id,
|
| 29 |
-
"api_config": api_configs[
|
|
|
|
|
|
|
|
|
|
| 30 |
}
|
| 31 |
|
| 32 |
# specify the path to the prompt templates
|
|
@@ -46,7 +67,7 @@ def solve_problem(problem, max_iterations, reward_threshold, swift_model_id, sag
|
|
| 46 |
if os.path.exists(path):
|
| 47 |
prompt_template_dir = path
|
| 48 |
break
|
| 49 |
-
|
| 50 |
dataset = []
|
| 51 |
embeddings = [] # TODO: for retrieval augmentation (not implemented yet now)
|
| 52 |
s2 = SwiftSage(
|
|
@@ -55,32 +76,35 @@ def solve_problem(problem, max_iterations, reward_threshold, swift_model_id, sag
|
|
| 55 |
prompt_template_dir,
|
| 56 |
swift_config,
|
| 57 |
sage_config,
|
| 58 |
-
|
| 59 |
use_retrieval=use_retrieval,
|
| 60 |
start_with_sage=start_with_sage,
|
| 61 |
)
|
| 62 |
|
| 63 |
-
reasoning, solution = s2.solve(problem, max_iterations, reward_threshold)
|
| 64 |
solution = solution.replace("Answer (from running the code):\n ", " ")
|
| 65 |
-
|
|
|
|
|
|
|
|
|
|
| 66 |
|
| 67 |
|
| 68 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 69 |
# gr.Markdown("## SwiftSage: A Multi-Agent Framework for Reasoning")
|
| 70 |
# use the html and center the title
|
| 71 |
-
gr.HTML("<h1 style='text-align: center;'>SwiftSage: A
|
| 72 |
|
| 73 |
with gr.Row():
|
| 74 |
-
swift_model_id = gr.Textbox(label="π Swift Model ID", value=
|
| 75 |
-
feedback_model_id = gr.Textbox(label="π€ Feedback Model ID", value=
|
| 76 |
-
sage_model_id = gr.Textbox(label="π Sage Model ID", value=
|
| 77 |
# the following two should have a smaller width
|
| 78 |
|
| 79 |
with gr.Accordion(label="βοΈ Advanced Options", open=False):
|
| 80 |
with gr.Row():
|
| 81 |
with gr.Column():
|
| 82 |
max_iterations = gr.Textbox(label="Max Iterations", value="5")
|
| 83 |
-
reward_threshold = gr.Textbox(label="
|
| 84 |
# TODO: add top-p and temperature for each module for controlling
|
| 85 |
with gr.Column():
|
| 86 |
top_p_swift = gr.Textbox(label="Top-p for Swift", value="0.9")
|
|
@@ -89,8 +113,8 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 89 |
top_p_sage = gr.Textbox(label="Top-p for Sage", value="0.9")
|
| 90 |
temperature_sage = gr.Textbox(label="Temperature for Sage", value="0.7")
|
| 91 |
with gr.Column():
|
| 92 |
-
|
| 93 |
-
|
| 94 |
|
| 95 |
use_retrieval = gr.Checkbox(label="Use Retrieval Augmentation", value=False, visible=False)
|
| 96 |
start_with_sage = gr.Checkbox(label="Start with Sage", value=False, visible=False)
|
|
@@ -101,13 +125,18 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 101 |
reasoning_output = gr.Textbox(label="Reasoning steps with Code", interactive=False)
|
| 102 |
solution_output = gr.Textbox(label="Final answer", interactive=False)
|
| 103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
solve_button.click(
|
| 105 |
solve_problem,
|
| 106 |
-
inputs=[problem, max_iterations, reward_threshold, swift_model_id, sage_model_id, feedback_model_id, use_retrieval, start_with_sage],
|
| 107 |
-
outputs=[reasoning_output, solution_output]
|
| 108 |
)
|
| 109 |
|
| 110 |
|
|
|
|
| 111 |
if __name__ == '__main__':
|
| 112 |
# make logs dir if it does not exist
|
| 113 |
if not os.path.exists('logs'):
|
|
|
|
| 9 |
from swiftsage.utils.commons import PromptTemplate, api_configs, setup_logging
|
| 10 |
from pkg_resources import resource_filename
|
| 11 |
|
| 12 |
+
ENGINE = "Together"
|
| 13 |
+
# SWIFT_MODEL_ID = "meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo"
|
| 14 |
+
SWIFT_MODEL_ID = "meta-llama/Meta-Llama-3-8B-Instruct-Reference"
|
| 15 |
+
FEEDBACK_MODEL_ID = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo"
|
| 16 |
+
SAGE_MODEL_ID = "meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo"
|
| 17 |
+
|
| 18 |
+
# ENGINE = "SambaNova"
|
| 19 |
+
# SWIFT_MODEL_ID = "Meta-Llama-3.1-8B-Instruct"
|
| 20 |
+
# FEEDBACK_MODEL_ID = "Meta-Llama-3.1-70B-Instruct"
|
| 21 |
+
# SAGE_MODEL_ID = "Meta-Llama-3.1-405B-Instruct"
|
| 22 |
+
|
| 23 |
+
def solve_problem(problem, max_iterations, reward_threshold, swift_model_id, sage_model_id, feedback_model_id, use_retrieval, start_with_sage, swift_temperature, swift_top_p, sage_temperature, sage_top_p, feedback_temperature, feedback_top_p):
|
| 24 |
+
global ENGINE
|
| 25 |
# Configuration for each LLM
|
| 26 |
max_iterations = int(max_iterations)
|
| 27 |
reward_threshold = int(reward_threshold)
|
| 28 |
|
| 29 |
swift_config = {
|
| 30 |
"model_id": swift_model_id,
|
| 31 |
+
"api_config": api_configs[ENGINE],
|
| 32 |
+
"temperature": float(swift_temperature),
|
| 33 |
+
"top_p": float(swift_top_p),
|
| 34 |
+
"max_tokens": 2048,
|
| 35 |
}
|
| 36 |
|
| 37 |
+
feedback_config = {
|
| 38 |
"model_id": feedback_model_id,
|
| 39 |
+
"api_config": api_configs[ENGINE],
|
| 40 |
+
"temperature": float(feedback_temperature),
|
| 41 |
+
"top_p": float(feedback_top_p),
|
| 42 |
+
"max_tokens": 2048,
|
| 43 |
}
|
| 44 |
|
| 45 |
sage_config = {
|
| 46 |
"model_id": sage_model_id,
|
| 47 |
+
"api_config": api_configs[ENGINE],
|
| 48 |
+
"temperature": float(sage_temperature),
|
| 49 |
+
"top_p": float(sage_top_p),
|
| 50 |
+
"max_tokens": 2048,
|
| 51 |
}
|
| 52 |
|
| 53 |
# specify the path to the prompt templates
|
|
|
|
| 67 |
if os.path.exists(path):
|
| 68 |
prompt_template_dir = path
|
| 69 |
break
|
| 70 |
+
|
| 71 |
dataset = []
|
| 72 |
embeddings = [] # TODO: for retrieval augmentation (not implemented yet now)
|
| 73 |
s2 = SwiftSage(
|
|
|
|
| 76 |
prompt_template_dir,
|
| 77 |
swift_config,
|
| 78 |
sage_config,
|
| 79 |
+
feedback_config,
|
| 80 |
use_retrieval=use_retrieval,
|
| 81 |
start_with_sage=start_with_sage,
|
| 82 |
)
|
| 83 |
|
| 84 |
+
reasoning, solution, messages = s2.solve(problem, max_iterations, reward_threshold)
|
| 85 |
solution = solution.replace("Answer (from running the code):\n ", " ")
|
| 86 |
+
# generate HTML for the log messages and display them with wrap and a scroll bar and a max height in the code block with log style
|
| 87 |
+
|
| 88 |
+
log_messages = "<pre style='white-space: pre-wrap; max-height: 500px; overflow-y: scroll;'><code class='log'>" + "\n".join(messages) + "</code></pre>"
|
| 89 |
+
return reasoning, solution, log_messages
|
| 90 |
|
| 91 |
|
| 92 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 93 |
# gr.Markdown("## SwiftSage: A Multi-Agent Framework for Reasoning")
|
| 94 |
# use the html and center the title
|
| 95 |
+
gr.HTML("<h1 style='text-align: center;'>SwiftSage: A General Reasoning Framework with Fast and Slow Thinking</h1> (v2-beta)")
|
| 96 |
|
| 97 |
with gr.Row():
|
| 98 |
+
swift_model_id = gr.Textbox(label="π Swift Model ID", value=SWIFT_MODEL_ID)
|
| 99 |
+
feedback_model_id = gr.Textbox(label="π€ Feedback Model ID", value=FEEDBACK_MODEL_ID)
|
| 100 |
+
sage_model_id = gr.Textbox(label="π Sage Model ID", value=SAGE_MODEL_ID)
|
| 101 |
# the following two should have a smaller width
|
| 102 |
|
| 103 |
with gr.Accordion(label="βοΈ Advanced Options", open=False):
|
| 104 |
with gr.Row():
|
| 105 |
with gr.Column():
|
| 106 |
max_iterations = gr.Textbox(label="Max Iterations", value="5")
|
| 107 |
+
reward_threshold = gr.Textbox(label="feedback Threshold", value="8")
|
| 108 |
# TODO: add top-p and temperature for each module for controlling
|
| 109 |
with gr.Column():
|
| 110 |
top_p_swift = gr.Textbox(label="Top-p for Swift", value="0.9")
|
|
|
|
| 113 |
top_p_sage = gr.Textbox(label="Top-p for Sage", value="0.9")
|
| 114 |
temperature_sage = gr.Textbox(label="Temperature for Sage", value="0.7")
|
| 115 |
with gr.Column():
|
| 116 |
+
top_p_feedback = gr.Textbox(label="Top-p for Feedback", value="0.9")
|
| 117 |
+
temperature_feedback = gr.Textbox(label="Temperature for Feedback", value="0.7")
|
| 118 |
|
| 119 |
use_retrieval = gr.Checkbox(label="Use Retrieval Augmentation", value=False, visible=False)
|
| 120 |
start_with_sage = gr.Checkbox(label="Start with Sage", value=False, visible=False)
|
|
|
|
| 125 |
reasoning_output = gr.Textbox(label="Reasoning steps with Code", interactive=False)
|
| 126 |
solution_output = gr.Textbox(label="Final answer", interactive=False)
|
| 127 |
|
| 128 |
+
# add a log display for showing the log messages
|
| 129 |
+
with gr.Accordion(label="π Log Messages", open=False):
|
| 130 |
+
log_output = gr.HTML("<p>No log messages yet.</p>")
|
| 131 |
+
|
| 132 |
solve_button.click(
|
| 133 |
solve_problem,
|
| 134 |
+
inputs=[problem, max_iterations, reward_threshold, swift_model_id, sage_model_id, feedback_model_id, use_retrieval, start_with_sage, temperature_swift, top_p_swift, temperature_sage, top_p_sage, temperature_feedback, top_p_feedback],
|
| 135 |
+
outputs=[reasoning_output, solution_output, log_output],
|
| 136 |
)
|
| 137 |
|
| 138 |
|
| 139 |
+
|
| 140 |
if __name__ == '__main__':
|
| 141 |
# make logs dir if it does not exist
|
| 142 |
if not os.path.exists('logs'):
|