first commit

This commit is contained in:
2026-05-10 13:14:14 +01:00
commit 4726582379
14 changed files with 854 additions and 0 deletions

68
agent.py Normal file
View File

@@ -0,0 +1,68 @@
from pydantic_ai import Agent
from pydantic_ai.models.ollama import OllamaModel
from pydantic_ai.providers.ollama import OllamaProvider
from dotenv import load_dotenv
import os
import json
from prompts import OPPORTUNITY_PROMPT, EVENT_PROMPT
load_dotenv()
ollama_url = os.getenv("OLLAMA_BASE_URL")
prov = OllamaProvider(base_url=ollama_url)
# Use qwen2.5:3b or phi4-mini for low-end hardware (RAM < 8GB)
model = OllamaModel(
model_name='granite4.1:8b',
provider=prov
)
# --- OPPORTUNITY AGENT ---
opportunity_agent = Agent(
model,
output_type=str,
system_prompt=OPPORTUNITY_PROMPT,
retries=5
)
# --- EVENT AGENT ---
event_agent = Agent(
model,
output_type=str,
system_prompt=EVENT_PROMPT,
retries=5
)
async def parse_page(content: str, entry_type: str = "opportunity"):
"""
Parse content and extract entry data based on type.
Args:
content: The raw text content to parse
entry_type: Either 'opportunity' or 'event'
"""
# Select the appropriate agent
agent = opportunity_agent if entry_type == "opportunity" else event_agent
# 1. Run the agent (which returns a string)
print(f"Parsing {entry_type}...")
print(content)
result = await agent.run(content)
raw_text = result.output
print(raw_text)
# 2. Clean the string
# We remove the markdown decorators so json.loads doesn't crash
clean_json = raw_text.replace("```json", "").replace("```", "").strip()
try:
# 3. Convert string to a dictionary
data_dict = json.loads(clean_json)
# 4. Success! return the dictionary to main.py
return data_dict
except json.JSONDecodeError as e:
print(f"Critical Error: The AI sent invalid JSON. Text was: {raw_text}")
raise e