Spaces:
Sleeping
Sleeping
Commit
·
2af4dae
1
Parent(s):
51b4921
ReAct prompt
Browse files
app.py
CHANGED
|
@@ -728,6 +728,7 @@ def max_object_in_video(video_url: str, object_label: str = "bird") -> str:
|
|
| 728 |
|
| 729 |
return f"Maximum {object_label} count in a single frame: {max_count}"
|
| 730 |
|
|
|
|
| 731 |
def extract_final_answer(output: str) -> str:
|
| 732 |
# Try to extract answer after [YOUR FINAL ANSWER] or Final Answer:
|
| 733 |
match = re.search(r"\[YOUR FINAL ANSWER\]\s*(.+)", output)
|
|
@@ -738,7 +739,7 @@ def extract_final_answer(output: str) -> str:
|
|
| 738 |
return match.group(1).strip()
|
| 739 |
# Fallback: return the whole output if no match
|
| 740 |
return output.strip()
|
| 741 |
-
|
| 742 |
|
| 743 |
##-- Tool Discovery ---
|
| 744 |
# Use @tool for each function.
|
|
@@ -776,34 +777,48 @@ tool_descriptions = "\n".join(f"- {tool.name}: {tool.description}" for tool in t
|
|
| 776 |
# --- System Prompt for the Agent ---
|
| 777 |
|
| 778 |
system_prompt = f"""
|
| 779 |
-
You are a general AI assistant.
|
| 780 |
-
|
| 781 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 782 |
|
| 783 |
-
|
|
|
|
|
|
|
|
|
|
| 784 |
{tool_descriptions}
|
| 785 |
|
| 786 |
If the question is related to sports, awards, historical facts or similar topic that can be answered from wikipedia, you should use the 'wikipedia_and_generalknowledge_search'.
|
| 787 |
If the question is based on current events or news kind, then you can utilize the tool 'current_events_news_search_tool' to fetch relevant page information and answer from it.
|
|
|
|
| 788 |
You must not use multiple tools in a single call. Don't hallucinate.
|
| 789 |
|
| 790 |
Instructions to follow for YOUR FINAL ANSWER:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 791 |
- Don't include explanations, thoughts, or tool calls in YOUR FINAL ANSWER.
|
| 792 |
-
- YOUR FINAL ANSWER should be a single value (number, string, or comma-separated list).
|
| 793 |
-
- If your example thought and Final Answer is something like 'Thought:Final Answer: The country with the least number of athletes at the 1928 Summer Olympics was Luxembourg, which had only 2 athletes.' then your output should be just: 'Luxembourg'
|
| 794 |
-
|
| 795 |
|
| 796 |
**Examples:**
|
| 797 |
Q: Which country had the least number of athletes at the 1928 Summer Olympics?
|
|
|
|
|
|
|
|
|
|
|
|
|
| 798 |
YOUR FINAL ANSWER: Luxembourg
|
| 799 |
|
| 800 |
-
Q:
|
|
|
|
| 801 |
YOUR FINAL ANSWER: Python, JavaScript, Java
|
| 802 |
|
| 803 |
-
|
| 804 |
-
YOUR FINAL ANSWER: 12
|
| 805 |
-
|
| 806 |
-
If after 12 iterations also a tool usage is not useful then try to answer directly based on your knowledge. If you cannot answer then just say "no_answer" as YOUR FINAL ANSWER.
|
| 807 |
"""
|
| 808 |
# If your final answer is something like 'there were 5 studio albums published between 2000 and 2009' then modify YOUR FINAL ANSWER as: '5'
|
| 809 |
# If your final answer is something like 'b, e' then YOUR FINAL ANSWER be: 'b, e'
|
|
@@ -871,7 +886,7 @@ chat_llm = ChatHuggingFace(llm=llm)
|
|
| 871 |
chat_llm = ChatOpenAI(
|
| 872 |
openai_api_key=OPENAI_KEY,
|
| 873 |
model_name=OPENAI_MODEL,
|
| 874 |
-
temperature=0.
|
| 875 |
# max_tokens=10
|
| 876 |
)
|
| 877 |
|
|
@@ -956,8 +971,9 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
|
|
| 956 |
try:
|
| 957 |
# full_prompt = f"{system_prompt}\n Input Question: {question_text}"
|
| 958 |
# submitted_answer = agent.run(full_prompt)
|
| 959 |
-
submitted_answer_raw = agent.run(question_text)
|
| 960 |
-
submitted_answer =
|
|
|
|
| 961 |
answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
|
| 962 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 963 |
except Exception as e:
|
|
|
|
| 728 |
|
| 729 |
return f"Maximum {object_label} count in a single frame: {max_count}"
|
| 730 |
|
| 731 |
+
'''
|
| 732 |
def extract_final_answer(output: str) -> str:
|
| 733 |
# Try to extract answer after [YOUR FINAL ANSWER] or Final Answer:
|
| 734 |
match = re.search(r"\[YOUR FINAL ANSWER\]\s*(.+)", output)
|
|
|
|
| 739 |
return match.group(1).strip()
|
| 740 |
# Fallback: return the whole output if no match
|
| 741 |
return output.strip()
|
| 742 |
+
'''
|
| 743 |
|
| 744 |
##-- Tool Discovery ---
|
| 745 |
# Use @tool for each function.
|
|
|
|
| 777 |
# --- System Prompt for the Agent ---
|
| 778 |
|
| 779 |
system_prompt = f"""
|
| 780 |
+
You are a general AI assistant.You should think through problems step-by-step and use tools if needed.
|
| 781 |
+
|
| 782 |
+
Use this reasoning format repeatedly:
|
| 783 |
+
Thought: (what you think is happening or what you want to do next)
|
| 784 |
+
Action: (the tool to use, if needed)
|
| 785 |
+
Action Input: (input to the tool)
|
| 786 |
+
Observation: (result of the tool call)
|
| 787 |
|
| 788 |
+
Repeat this process as needed. ONLY AFTER finishing your reasoning and tool use, provide:
|
| 789 |
+
YOUR FINAL ANSWER: (a number, string, or comma-separated list — no explanation, no thoughts, just the answer)
|
| 790 |
+
|
| 791 |
+
You also have access to a set of tools, which you can use to answer the question. The available tools are:
|
| 792 |
{tool_descriptions}
|
| 793 |
|
| 794 |
If the question is related to sports, awards, historical facts or similar topic that can be answered from wikipedia, you should use the 'wikipedia_and_generalknowledge_search'.
|
| 795 |
If the question is based on current events or news kind, then you can utilize the tool 'current_events_news_search_tool' to fetch relevant page information and answer from it.
|
| 796 |
+
If the tool returns a long text, table, or list, extract only the most relevant information/paragraphs or data from which you can derive the answer, and return that as your final answer.
|
| 797 |
You must not use multiple tools in a single call. Don't hallucinate.
|
| 798 |
|
| 799 |
Instructions to follow for YOUR FINAL ANSWER:
|
| 800 |
+
Guidance:
|
| 801 |
+
- Prefer reasoning and tool use before jumping to final answer.
|
| 802 |
+
- Only use one tool per iteration.
|
| 803 |
+
- If the question relates to historical data or general knowledge, use 'wikipedia_and_generalknowledge_search'.
|
| 804 |
+
- If it relates to recent news, use 'current_events_news_search_tool'.
|
| 805 |
+
- If tool output is long, extract only what is relevant and use it to answer the question.
|
| 806 |
+
- Never hallucinate. If you cannot answer even after 12 iterations, return YOUR FINAL ANSWER as: no_answer
|
| 807 |
- Don't include explanations, thoughts, or tool calls in YOUR FINAL ANSWER.
|
|
|
|
|
|
|
|
|
|
| 808 |
|
| 809 |
**Examples:**
|
| 810 |
Q: Which country had the least number of athletes at the 1928 Summer Olympics?
|
| 811 |
+
Thought: I should look up historical Olympic data.
|
| 812 |
+
Action: wikipedia_and_generalknowledge_search
|
| 813 |
+
Action Input: least number of athletes 1928 Summer Olympics
|
| 814 |
+
Observation: The country with the least number of athletes was Luxembourg with 2 athletes.
|
| 815 |
YOUR FINAL ANSWER: Luxembourg
|
| 816 |
|
| 817 |
+
Q: What are the top 3 programming languages?
|
| 818 |
+
Thought: This is common knowledge.
|
| 819 |
YOUR FINAL ANSWER: Python, JavaScript, Java
|
| 820 |
|
| 821 |
+
If after 12 iterations also a tool usage is not useful then try to answer directly based on your knowledge without any hallucination. If you cannot answer then just say "no_answer" as YOUR FINAL ANSWER.
|
|
|
|
|
|
|
|
|
|
| 822 |
"""
|
| 823 |
# If your final answer is something like 'there were 5 studio albums published between 2000 and 2009' then modify YOUR FINAL ANSWER as: '5'
|
| 824 |
# If your final answer is something like 'b, e' then YOUR FINAL ANSWER be: 'b, e'
|
|
|
|
| 886 |
chat_llm = ChatOpenAI(
|
| 887 |
openai_api_key=OPENAI_KEY,
|
| 888 |
model_name=OPENAI_MODEL,
|
| 889 |
+
temperature=0.15,
|
| 890 |
# max_tokens=10
|
| 891 |
)
|
| 892 |
|
|
|
|
| 971 |
try:
|
| 972 |
# full_prompt = f"{system_prompt}\n Input Question: {question_text}"
|
| 973 |
# submitted_answer = agent.run(full_prompt)
|
| 974 |
+
# submitted_answer_raw = agent.run(question_text)
|
| 975 |
+
submitted_answer = agent.run(question_text)
|
| 976 |
+
# submitted_answer = extract_final_answer(submitted_answer_raw)
|
| 977 |
answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
|
| 978 |
results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
|
| 979 |
except Exception as e:
|