feat : integrate reasoning view
This commit is contained in:
@@ -138,6 +138,7 @@ async def get_latest_answer():
|
||||
query_resp = {
|
||||
"done": "false",
|
||||
"answer": interaction.current_agent.last_answer,
|
||||
"reasoning": interaction.current_agent.last_reasoning,
|
||||
"agent_name": interaction.current_agent.agent_name if interaction.current_agent else "None",
|
||||
"success": interaction.current_agent.success,
|
||||
"blocks": {f'{i}': block.jsonify() for i, block in enumerate(interaction.get_last_blocks_result())} if interaction.current_agent else {},
|
||||
@@ -145,6 +146,7 @@ async def get_latest_answer():
|
||||
"uid": uid
|
||||
}
|
||||
interaction.current_agent.last_answer = ""
|
||||
interaction.current_agent.last_reasoning = ""
|
||||
query_resp_history.append(query_resp)
|
||||
return JSONResponse(status_code=200, content=query_resp)
|
||||
if query_resp_history:
|
||||
@@ -158,6 +160,7 @@ async def think_wrapper(interaction, query):
|
||||
success = await interaction.think()
|
||||
if not success:
|
||||
interaction.last_answer = "Error: No answer from agent"
|
||||
interaction.last_reasoning = "Error: No reasoning from agent"
|
||||
interaction.last_success = False
|
||||
else:
|
||||
interaction.last_success = True
|
||||
@@ -166,7 +169,8 @@ async def think_wrapper(interaction, query):
|
||||
return success
|
||||
except Exception as e:
|
||||
logger.error(f"Error in think_wrapper: {str(e)}")
|
||||
interaction.last_answer = f"Error: {str(e)}"
|
||||
interaction.last_answer = f""
|
||||
interaction.last_reasoning = f"Error: {str(e)}"
|
||||
interaction.last_success = False
|
||||
raise e
|
||||
|
||||
@@ -177,6 +181,7 @@ async def process_query(request: QueryRequest):
|
||||
query_resp = QueryResponse(
|
||||
done="false",
|
||||
answer="",
|
||||
reasoning="",
|
||||
agent_name="Unknown",
|
||||
success="false",
|
||||
blocks={},
|
||||
@@ -194,6 +199,7 @@ async def process_query(request: QueryRequest):
|
||||
|
||||
if not success:
|
||||
query_resp.answer = interaction.last_answer
|
||||
query_resp.reasoning = interaction.last_reasoning
|
||||
return JSONResponse(status_code=400, content=query_resp.jsonify())
|
||||
|
||||
if interaction.current_agent:
|
||||
@@ -208,6 +214,7 @@ async def process_query(request: QueryRequest):
|
||||
logger.info(f"Blocks: {blocks_json}")
|
||||
query_resp.done = "true"
|
||||
query_resp.answer = interaction.last_answer
|
||||
query_resp.reasoning = interaction.last_reasoning
|
||||
query_resp.agent_name = interaction.current_agent.agent_name
|
||||
query_resp.success = str(interaction.last_success)
|
||||
query_resp.blocks = blocks_json
|
||||
|
||||
@@ -94,6 +94,7 @@ function App() {
|
||||
{
|
||||
type: 'agent',
|
||||
content: data.answer,
|
||||
reasoning: data.reasoning,
|
||||
agentName: data.agent_name,
|
||||
status: data.status,
|
||||
uid: data.uid,
|
||||
@@ -231,6 +232,12 @@ function App() {
|
||||
>
|
||||
Browser View
|
||||
</button>
|
||||
<button
|
||||
className={currentView === 'thinking' ? 'active' : ''}
|
||||
onClick={() => setCurrentView('thinking')}
|
||||
>
|
||||
Reasoning view
|
||||
</button>
|
||||
</div>
|
||||
<div className="content">
|
||||
{error && <p className="error">{error}</p>}
|
||||
@@ -256,6 +263,33 @@ function App() {
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
) : currentView == 'thinking' ? (
|
||||
<div className="thinking">
|
||||
<div className="messages">
|
||||
{messages.length === 0 ? (
|
||||
<p className="placeholder">No thinking yet.</p>
|
||||
) : (
|
||||
messages.map((msg, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className={`message ${
|
||||
msg.type === 'user'
|
||||
? 'user-message'
|
||||
: msg.type === 'agent'
|
||||
? 'agent-message'
|
||||
: 'error-message'
|
||||
}`}
|
||||
>
|
||||
{msg.type === 'agent' && (
|
||||
<span className="agent-name">{msg.agentName}</span>
|
||||
)}
|
||||
<ReactMarkdown>{msg.reasoning}</ReactMarkdown>
|
||||
</div>
|
||||
))
|
||||
)}
|
||||
<div ref={messagesEndRef} />
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<div className="screenshot">
|
||||
<img
|
||||
|
||||
@@ -44,6 +44,7 @@ class Agent():
|
||||
self.blocks_result = []
|
||||
self.success = True
|
||||
self.last_answer = ""
|
||||
self.last_reasoning = ""
|
||||
self.status_message = "Haven't started yet"
|
||||
self.verbose = verbose
|
||||
self.executor = ThreadPoolExecutor(max_workers=1)
|
||||
@@ -64,6 +65,10 @@ class Agent():
|
||||
def get_last_answer(self) -> str:
|
||||
return self.last_answer
|
||||
|
||||
@property
|
||||
def get_last_reasoning(self) -> str:
|
||||
return self.last_reasoning
|
||||
|
||||
@property
|
||||
def get_blocks(self) -> list:
|
||||
return self.blocks_result
|
||||
|
||||
@@ -221,8 +221,9 @@ class PlannerAgent(Agent):
|
||||
agent_prompt = self.make_prompt(task['task'], required_infos)
|
||||
pretty_print(f"Agent {task['agent']} started working...", color="status")
|
||||
self.logger.info(f"Agent {task['agent']} started working on {task['task']}.")
|
||||
answer, _ = await self.agents[task['agent'].lower()].process(agent_prompt, None)
|
||||
answer, reasoning = await self.agents[task['agent'].lower()].process(agent_prompt, None)
|
||||
self.last_answer = answer
|
||||
self.last_reasoning = reasoning
|
||||
self.blocks_result = self.agents[task['agent'].lower()].blocks_result
|
||||
agent_answer = self.agents[task['agent'].lower()].raw_answer_blocks(answer)
|
||||
success = self.agents[task['agent'].lower()].get_success
|
||||
|
||||
@@ -22,6 +22,7 @@ class Interaction:
|
||||
self.current_agent = None
|
||||
self.last_query = None
|
||||
self.last_answer = None
|
||||
self.last_reasoning = None
|
||||
self.agents = agents
|
||||
self.tts_enabled = tts_enabled
|
||||
self.stt_enabled = stt_enabled
|
||||
@@ -158,7 +159,7 @@ class Interaction:
|
||||
tmp = self.last_answer
|
||||
self.current_agent = agent
|
||||
self.is_generating = True
|
||||
self.last_answer, _ = await agent.process(self.last_query, self.speech)
|
||||
self.last_answer, self.last_reasoning = await agent.process(self.last_query, self.speech)
|
||||
self.is_generating = False
|
||||
if push_last_agent_memory:
|
||||
self.current_agent.memory.push('user', self.last_query)
|
||||
|
||||
@@ -19,6 +19,7 @@ class QueryRequest(BaseModel):
|
||||
class QueryResponse(BaseModel):
|
||||
done: str
|
||||
answer: str
|
||||
reasoning: str
|
||||
agent_name: str
|
||||
success: str
|
||||
blocks: dict
|
||||
@@ -32,6 +33,7 @@ class QueryResponse(BaseModel):
|
||||
return {
|
||||
"done": self.done,
|
||||
"answer": self.answer,
|
||||
"reasoning": self.reasoning,
|
||||
"agent_name": self.agent_name,
|
||||
"success": self.success,
|
||||
"blocks": self.blocks,
|
||||
|
||||
Reference in New Issue
Block a user