Update app.py
Browse files
app.py
CHANGED
|
@@ -14,9 +14,6 @@ from bs4 import BeautifulSoup
|
|
| 14 |
from pydantic import BaseModel, Field
|
| 15 |
import nest_asyncio
|
| 16 |
import requests
|
| 17 |
-
import asyncio
|
| 18 |
-
from tavily import TavilyClient
|
| 19 |
-
|
| 20 |
|
| 21 |
#from agents.extensions.models.litellm_model import LitellmModel
|
| 22 |
|
|
@@ -138,7 +135,7 @@ class BasicAgent:
|
|
| 138 |
print("BasicAgent initialized.")
|
| 139 |
def __call__(self, question: str) -> str:
|
| 140 |
print(f"Agent received question (first 50 chars): {question[:50]}...")
|
| 141 |
-
|
| 142 |
instructions = """
|
| 143 |
You are a ReAct (Reason-Act-Observe) agent that searches the internet to find accurate answers to questions.
|
| 144 |
## Available Tools
|
|
@@ -177,16 +174,25 @@ When you've found the answer, stop reasoning and return ONLY the answer.
|
|
| 177 |
- Just the answer text — for example: `California`
|
| 178 |
|
| 179 |
"""
|
| 180 |
-
|
| 181 |
my_agent = Agent(
|
| 182 |
name="Expert Question Answering Agent",
|
| 183 |
instructions=instructions,
|
| 184 |
-
tools = [
|
|
|
|
|
|
|
|
|
|
| 185 |
model="gpt-4o-mini"
|
| 186 |
)
|
| 187 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 188 |
async def run_agent_streamed():
|
| 189 |
-
|
|
|
|
| 190 |
if hasattr(update, "new_items") and update.new_items:
|
| 191 |
for step in update.new_items:
|
| 192 |
print("🧠 Thought:", step.thought)
|
|
@@ -195,13 +201,24 @@ When you've found the answer, stop reasoning and return ONLY the answer.
|
|
| 195 |
print("-" * 50)
|
| 196 |
print(f"Agent gave answer (first 50 chars): {update.final_output[:50]}...")
|
| 197 |
return update.final_output
|
| 198 |
-
|
| 199 |
-
result = asyncio.run(run_agent_streamed())
|
| 200 |
-
return result
|
| 201 |
-
|
| 202 |
|
| 203 |
|
| 204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
def run_and_submit_all( profile: gr.OAuthProfile | None):
|
| 206 |
"""
|
| 207 |
Fetches all questions, runs the BasicAgent on them, submits all answers,
|
|
|
|
| 14 |
from pydantic import BaseModel, Field
|
| 15 |
import nest_asyncio
|
| 16 |
import requests
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
#from agents.extensions.models.litellm_model import LitellmModel
|
| 19 |
|
|
|
|
| 135 |
print("BasicAgent initialized.")
|
| 136 |
def __call__(self, question: str) -> str:
|
| 137 |
print(f"Agent received question (first 50 chars): {question[:50]}...")
|
| 138 |
+
|
| 139 |
instructions = """
|
| 140 |
You are a ReAct (Reason-Act-Observe) agent that searches the internet to find accurate answers to questions.
|
| 141 |
## Available Tools
|
|
|
|
| 174 |
- Just the answer text — for example: `California`
|
| 175 |
|
| 176 |
"""
|
| 177 |
+
|
| 178 |
my_agent = Agent(
|
| 179 |
name="Expert Question Answering Agent",
|
| 180 |
instructions=instructions,
|
| 181 |
+
tools = [
|
| 182 |
+
web_search,
|
| 183 |
+
visit_website
|
| 184 |
+
],
|
| 185 |
model="gpt-4o-mini"
|
| 186 |
)
|
| 187 |
+
|
| 188 |
+
import nest_asyncio
|
| 189 |
+
import asyncio
|
| 190 |
+
|
| 191 |
+
nest_asyncio.apply()
|
| 192 |
+
|
| 193 |
async def run_agent_streamed():
|
| 194 |
+
stream = Runner.run_streamed(my_agent, input=question, max_turns=25)
|
| 195 |
+
for update in stream.iter_steps():
|
| 196 |
if hasattr(update, "new_items") and update.new_items:
|
| 197 |
for step in update.new_items:
|
| 198 |
print("🧠 Thought:", step.thought)
|
|
|
|
| 201 |
print("-" * 50)
|
| 202 |
print(f"Agent gave answer (first 50 chars): {update.final_output[:50]}...")
|
| 203 |
return update.final_output
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
|
| 205 |
|
| 206 |
|
| 207 |
+
# result = Runner.run_sync(
|
| 208 |
+
# my_agent,
|
| 209 |
+
# input=question,
|
| 210 |
+
# max_turns=25
|
| 211 |
+
# )
|
| 212 |
+
# print("\n--- Intermediate Reasoning ---")
|
| 213 |
+
# for step in result.steps:
|
| 214 |
+
# print("🧠 Thought:", step.thought)
|
| 215 |
+
# print("⚙️ Action:", step.tool_call)
|
| 216 |
+
# print("🔍 Observation:", step.observation)
|
| 217 |
+
# print("-" * 50)
|
| 218 |
+
|
| 219 |
+
# print(f"Agent returning fixed answer(first 50 chars): {result.final_output[:50]}...")
|
| 220 |
+
# return result.final_output
|
| 221 |
+
|
| 222 |
def run_and_submit_all( profile: gr.OAuthProfile | None):
|
| 223 |
"""
|
| 224 |
Fetches all questions, runs the BasicAgent on them, submits all answers,
|