Instructions to use loglogai/yvligo with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use loglogai/yvligo with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-V4.1-Flash-1017") model = PeftModel.from_pretrained(base_model, "loglogai/yvligo") - Notebooks
- Google Colab
- Kaggle
yvligo
yvligo is DeepSeek-V4.1-Flash-1017 post-trained to run X (Twitter) Ads campaigns as a tool-using agent. Given a client's brief, it:
- sets up campaigns through X Ads API tools;
- checks on them through the flight and adjusts targeting, bids and budgets;
- ends with a recap to the client.
It is a LoRA adapter trained with supervised fine-tuning on expert traces: complete campaign runs by an expert agent in a simulated X Ads environment. A run became a trace only when it beat a scripted baseline and broke none of the brief's rules.
Results
We ran each agent once on the 45 briefs of AdVal, our benchmark of agents running ad campaigns on a simulated X Ads market, at the same rollout seed for every agent. None of these briefs or their worlds appear in the training data.
A run scores its conversions over par: the expected conversions its campaigns drove, divided by those of a scripted baseline in the same world and seed. The baseline runs one ad group on the brief's rules at X's default AUTO bid.
| Agent | Geometric mean of conversions ÷ par | yvligo ÷ agent, paired by brief (SE) | Briefs yvligo is ahead on |
|---|---|---|---|
| Expert (source of the training traces) | 1.349 | ×0.972 (×1.025) | 47% |
| yvligo | 1.311 | ||
| Gemini 4 Argon (Antigravity) | 1.198 | ×1.094 (×1.034) | 67% |
| GPT-6.1 Sol (Codex) | 1.145 | ×1.145 (×1.035) | 73% |
| DeepSeek-V4.1-Flash, before training (same setup as yvligo) | 1.095 | ×1.196 (×1.036) | 80% |
| Grok 4.7 (Grok Build) | 1.087 | ×1.206 (×1.038) | 80% |
| Claude Opus 5.5 (Claude Code) | 1.068 | ×1.228 (×1.033) | 89% |
| GPT-6 Astra (Codex) | 1.058 | ×1.239 (×1.036) | 82% |
| Muse Spark 1.3 (Muse Code) | 1.041 | ×1.259 (×1.040) | 89% |
| Inkling 2 Small (Claude Code on Tinker) | 1.023 | ×1.282 (×1.032) | 91% |
| Claude Haiku 5.5 (Claude Code) | 1.012 | ×1.295 (×1.037) | 89% |
| Muse Wonder 1.0 (Muse Code) | 1.007 | ×1.302 (×1.040) | 89% |
| Claude Sonnet 5.5 (Claude Code) | 0.930 | ×1.409 (×1.043) | 96% |
| GPT-6 Luna (Codex) | 0.738 | ×1.775 (×1.244) | 93% |
| Nemotron 3.5 Lightning (Claude Code on OpenRouter) | 0.213 | ×6.147 (×1.469) | 96% |
The other models ran in their own agent CLIs at medium reasoning effort.
Across the 45 briefs, yvligo:
- never scored under 0.8 of par (its lowest was 0.842);
- wrote an accurate recap every time;
- had 2.3% of its tool calls return an error (the expert 1.6%);
- broke one rule, as did the expert: on a phones-only brief it also advertised on desktop;
- gated to the brief's minimum age on 5 of the 11 briefs that set one; the expert never did.
X's policy and the brief set different kinds of requirements. X's policy is legal: alcohol ads in the US must target 21+, and X disapproves an ad group that breaks it. The brief says who can convert, such as UK residents on phones aged 18+; reaching anyone else wastes spend but breaks no law. Matching the brief's markets and platforms costs nothing, so missing them is an error. Matching its minimum age does cost: X only age-targets people whose age it knows, so an 18+ gate also drops adults of unknown age. Leaving it out can pay, and neither choice counts against a run.
Training
Traces. The expert ran 444 campaigns: 222 briefs, two rollout seeds each. A run was kept when it:
- finished;
- scored at least par;
- scored at least as well as the base model on the same brief and seed;
- passed the brief's rule checks.
That gave 312 traces from 181 of the 196 training briefs; the other 26 briefs were held back for validation. Each trace is a whole run of up to 262,144 tokens: the brief, every reasoning step, tool call and tool result, and the final recap.
Fine-tuning. Supervised fine-tuning on Tinker:
- loss on every assistant turn;
- LoRA rank 32, alpha 32, on all linear layers;
- Adam (β₁ 0.9, β₂ 0.95, ε 1e-8), 8 traces per step;
- learning rate 1e-4, decaying linearly over a planned 117 steps (three epochs).
Checkpoint. We checked the agent's behaviour after each training block (steps 10, 20, 39 and 59). This adapter is step 39: one epoch, about 24M tokens. The next checkpoint, at step 59, broke a tool-call format and was rejected. Validation loss on 22 held-out traces fell from 0.415 to 0.366.
Chat format. DeepSeek V4.1 with thinking at low effort, keeping earlier turns' reasoning in the context. We used tinker-cookbook's renderer, which matches DeepSeek's API token for token.
Source checkpoint: tinker://cd80698b-c69b-5061-b324-a416cee754e4:train:0/weights/block3-step39
How to use
This is a standard PEFT LoRA adapter for deepseek-ai/DeepSeek-V4.1-Flash-1017. Load it with any stack that serves
the base model with LoRA adapters. With Transformers and PEFT:
from transformers import AutoModelForCausalLM
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-V4.1-Flash-1017", torch_dtype="auto", device_map="auto")
model = PeftModel.from_pretrained(base, "loglogai/yvligo")
It was trained and measured in one agent setup:
- the system prompt is DeepSeek Harness's headless agent prompt;
- the user message is the client's brief;
- the tools are an X Ads API surface as MCP tools: 78 tools under
mcp__ads__*, plusmcp__scheduler__wait_untilto pause until later in the flight; - thinking is on at low effort, with earlier turns' reasoning kept in the context.
It expects to act through tools and to end the session with a recap to the client.
Limitations
- Keyword gains. Part of its gain over the base model comes from keyword targeting, which the simulator may reward more than X does.
- Evaluation awareness. In 18 of the 45 runs, its reasoning remarks on being evaluated.
License
MIT, the same as the base model.
- Downloads last month
- 96
Model tree for loglogai/yvligo
Base model
deepseek-ai/DeepSeek-V4.1-Flash-1017