Codette-Reasoning / inference /multi_adapter_engine.py
Raiff1982's picture
Upload 120 files
ed1b365 verified
class CodetteEngine:
def __init__(self, loader, registry):
self.loader = loader
self.registry = registry
def generate(self, messages, adapter):
self.loader.set_active_adapter(adapter)
prompt = self.loader.format_messages(messages)
inputs = self.loader.tokenize(prompt)
params = self.registry[adapter]["generation"]
output = self.loader.model.generate(
**inputs,
max_new_tokens=params.get("max_tokens", 512),
temperature=params.get("temperature", 0.7),
top_p=params.get("top_p", 0.9),
repetition_penalty=params.get("repetition_penalty", 1.1)
)
text = self.loader.tokenizer.decode(
output[0],
skip_special_tokens=True
)
return text
def multi_perspective(self, messages, adapters):
outputs = {}
for adapter in adapters:
outputs[adapter] = self.generate(messages, adapter)
return self._synthesize(messages, outputs)
def _synthesize(self, messages, responses):
combined = "\n\n".join(
f"{name.upper()}:\n{text}"
for name, text in responses.items()
)
synthesis_messages = messages + [
{
"role": "system",
"content": "Combine the perspectives into a single answer."
},
{
"role": "user",
"content": combined
}
]
return self.generate(synthesis_messages, "multi_perspective")