38 lines
911 B
Python
38 lines
911 B
Python
"""
|
|
Base Research Provider Interface
|
|
|
|
Abstract base class for research provider implementations.
|
|
Ensures consistency across different research providers (Google, Exa, etc.)
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Dict, Any
|
|
|
|
|
|
class ResearchProvider(ABC):
|
|
"""Abstract base class for research providers."""
|
|
|
|
@abstractmethod
|
|
async def search(
|
|
self,
|
|
prompt: str,
|
|
topic: str,
|
|
industry: str,
|
|
target_audience: str,
|
|
config: Any, # ResearchConfig
|
|
user_id: str
|
|
) -> Dict[str, Any]:
|
|
"""Execute research and return raw results."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_provider_enum(self):
|
|
"""Return APIProvider enum for subscription tracking."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def estimate_tokens(self) -> int:
|
|
"""Estimate token usage for pre-flight validation."""
|
|
pass
|
|
|