Whitepaper
Docs
Sign In
Function
Function
pipe
Deep Research
Function ID
deep_research
Creator
@latisnere
Downloads
340+
Deep Research
Get
README
No README available
Function Code
Show
from pydantic import BaseModel, Field import requests class Pipe: class Valves(BaseModel): SEARCH_API_URL: str = Field( default="https://api.duckduckgo.com/", description="Endpoint de la API de búsqueda." ) SEARCH_API_PARAMS: dict = Field( default={"format": "json", "no_redirect": 1}, description="Parámetros base para la búsqueda." ) SUMMARIZATION_MODEL: str = Field( default="gpt-3.5-turbo", description="Modelo de OpenAI para resumir los resultados." ) OPENAI_API_KEY: str = Field( default="", description="Clave API de OpenAI para generar resúmenes." ) def __init__(self): self.valves = self.Valves() def pipe(self, body: dict, __user__: dict): # Extraer la consulta del usuario query = body.get("prompt", "") if not query: return "No se proporcionó ninguna consulta para investigar." # Realizar búsqueda en DuckDuckGo params = self.valves.SEARCH_API_PARAMS.copy() params["q"] = query try: r = requests.get(self.valves.SEARCH_API_URL, params=params) r.raise_for_status() search_results = r.json() except Exception as e: return f"Error durante la búsqueda: {e}" # Extraer un resumen básico del resultado (usamos 'AbstractText') abstract = search_results.get("AbstractText", "") if not abstract: abstract = "No se encontraron resultados relevantes." # Generar un resumen más compacto usando la API de OpenAI summary = self.summarize_text(abstract) # Devolver la respuesta final con el resumen y la fuente return f"Resumen de la investigación:\n{summary}\n\nFuente: DuckDuckGo" def summarize_text(self, text: str) -> str: if not self.valves.OPENAI_API_KEY: return "Error: Clave API de OpenAI no configurada." headers = { "Authorization": f"Bearer {self.valves.OPENAI_API_KEY}", "Content-Type": "application/json" } payload = { "model": self.valves.SUMMARIZATION_MODEL, "messages": [ {"role": "system", "content": "Eres un asistente experto en investigación."}, {"role": "user", "content": f"Resume el siguiente texto de forma concisa: {text}"} ], "temperature": 0.7, "max_tokens": 150 } try: response = requests.post("https://api.openai.com/v1/chat/completions", json=payload, headers=headers) response.raise_for_status() result = response.json() summary = result["choices"][0]["message"]["content"] return summary.strip() except Exception as e: return f"Error en la generación del resumen: {e}"