Spaces:
Running
Running
Adding a "best answer"
Browse files
App.py
CHANGED
@@ -8,6 +8,10 @@ import google.generativeai as genai
|
|
8 |
from anthropic import Anthropic
|
9 |
import openai
|
10 |
from typing import List, Dict, Any, Optional
|
|
|
|
|
|
|
|
|
11 |
|
12 |
# Configure logging
|
13 |
logging.basicConfig(level=logging.INFO)
|
@@ -472,7 +476,28 @@ class PolyThinkOrchestrator:
|
|
472 |
<h3 class="problem-title">Problem Statement</h3>
|
473 |
<div class="problem-content">{problem}</div>
|
474 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
|
|
|
476 |
<div class="timeline-container">
|
477 |
"""
|
478 |
|
@@ -877,6 +902,47 @@ def create_polythink_interface():
|
|
877 |
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.4) !important;
|
878 |
background: linear-gradient(45deg, #666666, #888888) !important;
|
879 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
880 |
"""
|
881 |
|
882 |
# Hardcoded model configurations
|
@@ -899,7 +965,7 @@ def create_polythink_interface():
|
|
899 |
}
|
900 |
|
901 |
async def solve_problem(problem: str, max_rounds: int):
|
902 |
-
# Get API keys from environment variables
|
903 |
api_clients = {}
|
904 |
|
905 |
# Cohere client
|
@@ -917,6 +983,16 @@ def create_polythink_interface():
|
|
917 |
if gemini_key:
|
918 |
genai.configure(api_key=gemini_key)
|
919 |
api_clients["gemini"] = genai
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
920 |
|
921 |
# Check if all required API keys are present
|
922 |
required_providers = {solver1_config["provider"], solver2_config["provider"], judge_config["provider"]}
|
|
|
8 |
from anthropic import Anthropic
|
9 |
import openai
|
10 |
from typing import List, Dict, Any, Optional
|
11 |
+
from dotenv import load_dotenv
|
12 |
+
|
13 |
+
# Load environment variables from .env file if it exists
|
14 |
+
load_dotenv()
|
15 |
|
16 |
# Configure logging
|
17 |
logging.basicConfig(level=logging.INFO)
|
|
|
476 |
<h3 class="problem-title">Problem Statement</h3>
|
477 |
<div class="problem-content">{problem}</div>
|
478 |
</div>
|
479 |
+
"""
|
480 |
+
|
481 |
+
# Add best answer section if there's agreement
|
482 |
+
last_judgment = next((step.get("judgment", "") for step in reversed(history) if "judgment" in step), "")
|
483 |
+
if "AGREEMENT: YES" in last_judgment.upper():
|
484 |
+
# Get the last solutions before agreement
|
485 |
+
last_solutions = next((step["solutions"] for step in reversed(history) if "solutions" in step), None)
|
486 |
+
if last_solutions:
|
487 |
+
report += f"""
|
488 |
+
<div class="best-answer-container agreement">
|
489 |
+
<h3>Best Answer</h3>
|
490 |
+
<div class="best-answer-content">
|
491 |
+
<div class="best-answer-icon">✨</div>
|
492 |
+
<div class="best-answer-text">
|
493 |
+
<p><strong>Agreed Solution:</strong> {last_solutions[0]['solution']}</p>
|
494 |
+
<p><strong>Models:</strong> {last_solutions[0]['model_name']} & {last_solutions[1]['model_name']}</p>
|
495 |
+
</div>
|
496 |
+
</div>
|
497 |
+
</div>
|
498 |
+
"""
|
499 |
|
500 |
+
report += """
|
501 |
<div class="timeline-container">
|
502 |
"""
|
503 |
|
|
|
902 |
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.4) !important;
|
903 |
background: linear-gradient(45deg, #666666, #888888) !important;
|
904 |
}
|
905 |
+
|
906 |
+
/* Best Answer styling */
|
907 |
+
.best-answer-container {
|
908 |
+
background: #1a1a1a;
|
909 |
+
border-radius: 8px;
|
910 |
+
padding: 20px;
|
911 |
+
margin: 20px 0;
|
912 |
+
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);
|
913 |
+
border: 1px solid #4CAF50;
|
914 |
+
}
|
915 |
+
|
916 |
+
.best-answer-container h3 {
|
917 |
+
color: #4CAF50;
|
918 |
+
margin-top: 0;
|
919 |
+
margin-bottom: 15px;
|
920 |
+
font-size: 1.5em;
|
921 |
+
}
|
922 |
+
|
923 |
+
.best-answer-content {
|
924 |
+
display: flex;
|
925 |
+
align-items: flex-start;
|
926 |
+
gap: 15px;
|
927 |
+
}
|
928 |
+
|
929 |
+
.best-answer-icon {
|
930 |
+
font-size: 24px;
|
931 |
+
color: #4CAF50;
|
932 |
+
}
|
933 |
+
|
934 |
+
.best-answer-text {
|
935 |
+
flex: 1;
|
936 |
+
}
|
937 |
+
|
938 |
+
.best-answer-text p {
|
939 |
+
margin: 5px 0;
|
940 |
+
color: #ffffff;
|
941 |
+
}
|
942 |
+
|
943 |
+
.best-answer-text strong {
|
944 |
+
color: #4CAF50;
|
945 |
+
}
|
946 |
"""
|
947 |
|
948 |
# Hardcoded model configurations
|
|
|
965 |
}
|
966 |
|
967 |
async def solve_problem(problem: str, max_rounds: int):
|
968 |
+
# Get API keys from environment variables or Hugging Face secrets
|
969 |
api_clients = {}
|
970 |
|
971 |
# Cohere client
|
|
|
983 |
if gemini_key:
|
984 |
genai.configure(api_key=gemini_key)
|
985 |
api_clients["gemini"] = genai
|
986 |
+
|
987 |
+
# Anthropic client
|
988 |
+
anthropic_key = os.getenv("ANTHROPIC_API_KEY")
|
989 |
+
if anthropic_key:
|
990 |
+
api_clients["anthropic"] = Anthropic(api_key=anthropic_key)
|
991 |
+
|
992 |
+
# OpenAI client
|
993 |
+
openai_key = os.getenv("OPENAI_API_KEY")
|
994 |
+
if openai_key:
|
995 |
+
api_clients["openai"] = openai.OpenAI(api_key=openai_key)
|
996 |
|
997 |
# Check if all required API keys are present
|
998 |
required_providers = {solver1_config["provider"], solver2_config["provider"], judge_config["provider"]}
|