Skip to content

Commit d6066bb

Browse files
adambaloghbalogh.adam@icloud.com
andauthored
add back sentient (#98)
Co-authored-by: balogh.adam@icloud.com <adambalogh@Adams-MacBook-Pro.local>
1 parent 773e2df commit d6066bb

2 files changed

Lines changed: 64 additions & 2 deletions

File tree

agent/tools.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ async def search_token(
7070
token: str, chain: Optional[str] = None
7171
) -> Optional[TokenMetadata]:
7272
"""Search for a token by name or symbol. Returns metadata for the first token found."""
73-
token: Optional[TokenMetadata] = await token_metadata_repo.search_token(token, chain)
73+
token: Optional[TokenMetadata] = await token_metadata_repo.search_token(
74+
token, chain
75+
)
7476
if not token:
7577
return "No token found."
7678

server/fastapi_server.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from langgraph.graph.graph import CompiledGraph
1313
from langchain_core.runnables.config import RunnableConfig
1414
from datadog import initialize, statsd
15-
import aioboto3
1615
import aiohttp
1716

1817
from onchain.pools.protocol import ProtocolRegistry
@@ -51,6 +50,8 @@
5150
from server.activity_tracker import ActivityTracker
5251
from server.utils import extract_patterns, convert_to_agent_msg
5352
from server.dynamodb_helpers import DatabaseManager
53+
from agent.integrations.sentient.sentient_agent import BitQuantSentientAgent
54+
5455
from . import service
5556
from .auth import FirebaseIDTokenData, get_current_user
5657

@@ -366,6 +367,65 @@ async def get_activity_stats(
366367
logging.error(f"Error getting activity stats: {e}")
367368
raise HTTPException(status_code=500, detail="Internal server error")
368369

370+
@app.post("/api/sentient/assist")
371+
async def sentient_assist(
372+
request: Request,
373+
user: FirebaseIDTokenData = Depends(get_current_user),
374+
):
375+
"""
376+
Proxy endpoint for Sentient Agent. Accepts JSON with 'session' and 'query',
377+
calls BitQuantSentientAgent.assist, and returns the output blocks as JSON.
378+
"""
379+
try:
380+
data = await request.json()
381+
session_dict = data.get("session")
382+
query_dict = data.get("query")
383+
384+
class SentientAssistSession:
385+
def __init__(self, processor_id, activity_id, request_id, interactions):
386+
self.processor_id = processor_id
387+
self.activity_id = activity_id
388+
self.request_id = request_id
389+
self.interactions = interactions or []
390+
391+
def get_interactions(self):
392+
return self.interactions
393+
394+
class SentientAssistQuery:
395+
def __init__(self, id, prompt):
396+
self.id = id
397+
self.prompt = prompt
398+
399+
session = SentientAssistSession(
400+
processor_id=session_dict.get("processor_id"),
401+
activity_id=session_dict.get("activity_id"),
402+
request_id=session_dict.get("request_id"),
403+
interactions=session_dict.get("interactions", []),
404+
)
405+
query = SentientAssistQuery(
406+
id=query_dict.get("id"),
407+
prompt=query_dict.get("prompt"),
408+
)
409+
410+
class SentientFlaskResponseHandler:
411+
def __init__(self):
412+
self.blocks = []
413+
414+
async def emit_text_block(self, label, text):
415+
self.blocks.append({"label": label, "text": text})
416+
417+
async def complete(self):
418+
pass
419+
420+
agent = BitQuantSentientAgent()
421+
handler = SentientFlaskResponseHandler()
422+
423+
await agent.assist(session, query, handler)
424+
return JSONResponse(content={"blocks": handler.blocks})
425+
except Exception as e:
426+
logging.exception("Error in sentient_assist endpoint")
427+
return JSONResponse(status_code=500, content={"error": str(e)})
428+
369429
return app
370430

371431

0 commit comments

Comments
 (0)