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 45 held-out briefs in the simulated environment, 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) | yvligo ahead on |
|---|---|---|---|
| yvligo | 1.311 | ||
| Expert (source of the training traces) | 1.349 | ×0.972 (×1.025) | 21 of 45 |
| GPT-6.1 Sol (Codex) | 1.145 | ×1.145 (×1.035) | 33 |
| DeepSeek-V4.1-Flash (Claude Code on OpenRouter) | 1.117 | ×1.173 (×1.048) | 33 |
| DeepSeek-V4.1-Flash, before post-training (same setup as yvligo) | 1.095 | ×1.196 (×1.036) | 36 |
| Grok 4.7 (Grok Build) | 1.087 | ×1.206 (×1.038) | 36 |
| Opus 5.5 (Claude Code) | 1.068 | ×1.228 (×1.033) | 40 |
| GPT-6 Astra (Codex) | 1.058 | ×1.239 (×1.036) | 37 |
| Haiku 5.5 (Claude Code) | 1.012 | ×1.295 (×1.037) | 40 |
| Sonnet 5.5 (Claude Code) | 0.930 | ×1.409 (×1.043) | 43 |
| GPT-6 Luna (Codex) | 0.738 | ×1.775 (×1.244) | 42 |
| Nemotron 3.5 Lightning (Claude Code on OpenRouter) | 0.213 | ×6.147 (×1.469) | 43 |
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 6 brief rules, against the expert's 2 (see Limitations).
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
- Brief rules. It sometimes adds an 18+ age gate the brief doesn't need, three times on petitions. That accounts for 5 of its 6 rule failures, and it trails the expert on restricted-category briefs.
- 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
- 2
Model tree for loglogai/yvligo
Base model
deepseek-ai/DeepSeek-V4.1-Flash-1017