LLM Providers

StudentSync is provider-agnostic. Pick a cloud API for raw quality, or Ollama for full privacy.

Switching providers is a one-line change in scholar.json. The orchestrator, skills, and prompts stay identical — only the adapter changes.

Cloud providers

OpenAI

json
{
"llm": {
"provider": "openai",
"model": "gpt-4o"
}
}

Set OPENAI_API_KEY in .env. Recommended model for assignment solving: gpt-4o.

Google Gemini

json
{
"llm": {
"provider": "gemini",
"model": "gemini-1.5-pro"
}
}

Set GEMINI_API_KEY. The 1.5-pro tier handles long-context PDFs extremely well — ideal when your prof uploads a 50-page handbook.

OpenRouter

json
{
"llm": {
"provider": "openrouter",
"model": "anthropic/claude-3.5-sonnet"
}
}

A gateway to Claude, Llama, Mistral, and the rest without juggling multiple API keys. Set OPENROUTER_API_KEY.

Local / open-source

Ollama

json
{
"llm": {
"provider": "ollama",
"model": "llama3.1:70b",
"baseUrl": "http://localhost:11434"
}
}
  • Install from ollama.com.
  • Pull a model: ollama pull llama3.1:70b.
  • No API key needed. No data leaves your box.

Scuba's rule of thumb

For code-heavy assignments, use gpt-4o or claude-3.5-sonnet. For long-form theory with PDF context, gemini-1.5-pro is hard to beat. For privacy, go Ollama.

Fallback chains

You can configure a primary + fallback provider to survive outages:

json
{
"llm": {
"provider": "openai",
"model": "gpt-4o",
"fallback": {
"provider": "gemini",
"model": "gemini-1.5-pro"
}
}
}

Observability

Every LLM call is appended to llm_trace.log with prompt, response, tokens, and latency. Tail it live while the bot runs:

bash
tail -f ~/.studentsync/llm_trace.log