import pandas as pd from .embedding import Embedder from .retrieval import RetrievalDB from .codegen import generate_code_with_context class CodeGenPipeline: def __init__(self, parquet_path): self.df = pd.read_parquet(parquet_path) self.prompts = self.df["prompt"].tolist() self.solutions = self.df["canonical_solution"].tolist() self.embedder = Embedder() self.embeddings = self.embedder.encode(self.prompts, batch_size=32, show_progress_bar=True) self.retrieval_db = RetrievalDB(self.prompts, self.embeddings, self.solutions) def generate_code_from_prompt(self, user_prompt, k=1): query_emb = self.embedder.encode([user_prompt])[0] retrieved = self.retrieval_db.retrieve_similar_context(query_emb, k=k)[0] context = "\n\n".join([f"# Task:\n{r['prompt']}\n{r['solution']}" for r in retrieved]) return generate_code_with_context(user_prompt, context)