Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from src.reasoning.llm_client import OpenAIReasoner | |
| from src.retrieval.retriever import evidence_packet | |
| from src.schemas.domain import RetrievedEvidence | |
| from src.schemas.outputs import IdeaResult | |
| from src.schemas.prompts import IDEA_PROMPT | |
| def generate_ideas( | |
| reasoner: OpenAIReasoner, | |
| request: str, | |
| evidence: list[RetrievedEvidence], | |
| ) -> IdeaResult: | |
| prompt = f""" | |
| User focus: | |
| {request} | |
| Retrieved evidence: | |
| {evidence_packet(evidence)} | |
| Generate 4 to 6 distinct research ideas. Keep ideas technically specific, evidence-grounded, and | |
| honest about uncertainty. Do not include MVP scope or CV/demo value. Use evidence IDs in each | |
| idea's citations and wherever factual paper claims appear in prose. | |
| """.strip() | |
| return reasoner.parse( | |
| system_prompt=IDEA_PROMPT, | |
| user_prompt=prompt, | |
| output_schema=IdeaResult, | |
| max_output_tokens=9000, | |
| ) | |