fix(rag): Add DEXSCREENER_CONNECTOR to searchable mapping

- Added DEXSCREENER_CONNECTOR to _CONNECTOR_TYPE_TO_SEARCHABLE in chat_deepagent.py
- This fixes LLM's inability to search DexScreener data despite it being indexed
- Root cause: connector was enabled in DB but missing from mapping, causing it to be filtered out
- Verified: LLM now successfully retrieves WETH price (~$2,442) with DexScreener citations

Related files:
- chat_deepagent.py: Added connector mapping
- knowledge_base.py: Added debug logging for DexScreener search
- connector_service.py: Fixed metadata field names (base_symbol, quote_symbol, dex)
- 85_add_dexscreener_connector.py: Migration for connector type
This commit is contained in:
API Test Bot 2026-02-01 14:20:34 +07:00
parent d654556eb8
commit b5d0413459
6 changed files with 170 additions and 4 deletions

View file

@ -23,7 +23,7 @@ class DexScreenerConnector:
Note: DexScreener API is public and doesn't require authentication.
"""
self.base_url = "https://api.dexscreener.com/latest/dex"
self.base_url = "https://api.dexscreener.com"
self.rate_limit_delay = 0.2 # 200ms delay between requests to respect rate limits
async def make_request(
@ -106,13 +106,18 @@ class DexScreenerConnector:
Tuple containing (list of pairs, error message or None)
"""
try:
endpoint = f"tokens/{chain_id}/{token_address}"
endpoint = f"token-pairs/v1/{chain_id}/{token_address}"
response = await self.make_request(endpoint)
if response is None:
return [], f"Token not found: {chain_id}/{token_address}"
pairs = response.get("pairs", [])
# DexScreener API returns {"pairs": [...]} or {"pairs": null}
if isinstance(response, dict):
pairs = response.get("pairs", [])
else:
# Fallback if API returns list directly (shouldn't happen)
pairs = response if isinstance(response, list) else []
if not pairs:
return [], f"No trading pairs found for {chain_id}/{token_address}"
@ -121,6 +126,7 @@ class DexScreenerConnector:
except Exception as e:
return [], f"Error fetching pairs for {chain_id}/{token_address}: {e!s}"
def format_pair_to_markdown(
self,