Files
arindam200--awesome-ai-apps/memory_agents/engineering_content_agent/llm.py
T
2026-07-13 13:37:43 +08:00

55 lines
1.4 KiB
Python

"""Nebius Token Factory model setup for Agno agents."""
from __future__ import annotations
import asyncio
import json
import re
from typing import Any
from agno.agent import Agent
from agno.models.base import Model
from agno.models.nebius import Nebius
from config import Settings
def build_model(settings: Settings) -> Model:
return Nebius(
id=settings.nebius_model,
api_key=settings.nebius_api_key,
base_url=settings.nebius_base_url,
)
def make_agent(model: Model, instructions: str, name: str) -> Agent:
return Agent(
name=name,
model=model,
instructions=[instructions],
markdown=False,
)
async def run_agent(agent: Agent, prompt: str) -> str:
response = await asyncio.to_thread(agent.run, prompt)
return str(getattr(response, "content", response) or "")
def parse_json_object(text: str) -> dict[str, Any]:
"""Parse a JSON object from an Agno text response."""
cleaned = text.strip()
if cleaned.startswith("```"):
cleaned = re.sub(r"^```(?:json)?\s*", "", cleaned)
cleaned = re.sub(r"\s*```$", "", cleaned)
try:
parsed = json.loads(cleaned)
except json.JSONDecodeError:
match = re.search(r"\{.*\}", cleaned, flags=re.DOTALL)
if not match:
raise
parsed = json.loads(match.group(0))
if not isinstance(parsed, dict):
raise ValueError("Agno response did not contain a JSON object.")
return parsed