"Select Browser Use LLM adapters and configure provider
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill llm-and-output --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Llm And Output?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-llm-and-output)More formats (shields.io, HTML) on the badges page.
---
name: llm-and-output
description: "Select Browser Use LLM adapters and configure provider
credentials, ChatBrowserUse defaults, structured output, extraction LLMs,
fallback models, token/cost tracking, and model troubleshooting."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# LLM and Output
Use this sub-skill when the user is choosing or debugging the model layer for Browser Use: `ChatBrowserUse`, OpenAI, Anthropic, Google/Gemini, Azure, Groq, Mistral, Ollama, OpenRouter, Vercel, OCI, AWS/Bedrock, structured Pydantic output, page extraction models, fallback LLMs, or token/cost accounting.
## Route Here
- The request mentions `llm=...`, `ChatBrowserUse`, `ChatOpenAI`, `ChatGoogle`, `ChatAnthropic`, `ChatMistral`, `ChatOllama`, `ChatOpenRouter`, `ChatVercel`, `ChatAzureOpenAI`, `ChatLiteLLM`, or `browser_use.llm.models`.
- The user asks which model to use, how to set provider API keys, how to pass `api_key`, `base_url`, retry, timeout, temperature, reasoning, or structured-output flags.
- The user needs `output_model_schema`, `history.structured_output`, `history.get_structured_output(...)`, Pydantic validation, JSON schema repair, or final-result parsing.
- The task uses `page_extraction_llm`, extraction schema, or a cheaper model for `extract` actions.
- The task uses `fallback_llm`, model failover, `agent.is_using_fallback_llm`, or `agent.current_llm_model`.
- The task asks for `calculate_cost`, `pricing_url`, token usage, usage summaries, or cost logs.
## Route Elsewhere
- General `Agent(...)`, task prompting, callbacks, history helpers, run-loop behavior, planning, flash mode, and timeouts belong in `../agent-programming/SKILL.md`.
- Browser/profile/CDP/session settings, cloud browser sessions, downloads, domains, screenshots, and low-level browser control belong in `../browser-control/SKILL.md`.
- Custom actions, default tools, file tools, sensitive data handling, and `ActionResult` belong in `../tools-and-actions/SKILL.md`.
- Terminal `browser-use` or `bu` CLI sessions belong in `../cli-and-sessions/SKILL.md`.
- `@sandbox`, Browser Use Cloud production deployment, MCP, skills, telemetry, and external integrations belong in `../production-integrations/SKILL.md`.
## Recommended Default
For new browser automation code, recommend `ChatBrowserUse()` first. It is the Browser Use maintained chat adapter for browser automation and defaults to the optimized `bu-2-0` model when `BROWSER_USE_API_KEY` is set.
```python
import asyncio
from browser_use import Agent, ChatBrowserUse
async def main():
agent = Agent(
task="Open https://example.com and report the page title.",
llm=ChatBrowserUse(),
)
history = await agent.run(max_steps=10)
print(history.final_result())
asyncio.run(main())
```
Do not replace model names in existing user code. Users may intentionally test new provider models that are unknown to this skill. If code already specifies a model, preserve it unless the user asks for a recommendation or the model is the direct cause of an error.
## Credential Rules
- Prefer environment variables loaded by the user's app or shell; do not print API keys.
- `ChatBrowserUse()` reads `BROWSER_USE_API_KEY`; it can also accept `api_key=...` and `base_url=...` explicitly.
- OpenAI-compatible adapters usually accept `api_key=...`, `base_url=...`, `timeout=...`, and `max_retries=...`.
- Provider adapters read their conventional env vars when not passed explicitly, such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, `MISTRAL_API_KEY`, `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `OPENROUTER_API_KEY`, or `CEREBRAS_API_KEY` depending on the chosen adapter.
- Optional provider packages may be needed for less common adapters; if an import fails, install the documented extra or switch to a built-in adapter already available in the project environment.
See `references/models-and-credentials.md` for adapter snippets and credential checks.
## Model Adapter Patterns
Use top-level imports for common adapters:
```python
from browser_use import Agent, ChatBrowserUse, ChatOpenAI, ChatGoogle, ChatAnthropic
```
Use `browser_use.llm` for the full adapter surface and lazy imports:
```python
from browser_use.llm import ChatMistral, ChatOllama, ChatOpenRouter
```
Use `browser_use.llm.models.get_llm_by_name(...)` only when the user wants named aliases resolved from environment variables:
```python
from browser_use.llm.models import get_llm_by_name
llm = get_llm_by_name("bu_2_0")
```
Supported adapter families include Browser Use, OpenAI, Azure OpenAI, Google/Gemini, Anthropic, AWS/Bedrock, DeepSeek, Groq, Mistral, Cerebras, OCI raw, Ollama, OpenRouter, Vercel AI Gateway, and LiteLLM/LangChain compatibility paths.
## Structured Output
Use a Pydantic v2 model class with `output_model_schema=...` when the final answer must be machine-readable. Keep the model small and explicit.
```python
from pydantic import BaseModel
from browser_use import Agent, ChatBrowserUse
class Product(BaseModel):
title: str
price: str | None = None
in_stock: bool
agent = Agent(
task="Find the product title, price, and stock status. Return only the requested fields.",
llm=ChatBrowserUse(),
output_model_schema=Product,
)
history = await agent.run(max_steps=25)
product = history.structured_output or Product.model_validate_json(history.final_result())
```
Browser Use wires `output_model_schema` into the final `done` action and auto-bridges it to `extraction_schema` when no explicit extraction schema is provided. See `references/structured-output.md` for robust parsing, schema design, and validation repair.
## Page Extraction LLM
Use `page_extraction_llm` when normal planning needs a stronger model but page extraction should use a smaller, cheaper, or faster model.
```python
from browser_use import Agent, ChatBrowserUse, ChatOpenAI
agent = Agent(
task="Find three pricing tiers and extract their names and monthly prices.",
llm=ChatBrowserUse(),
page_extraction_llm=ChatOpenAI(model="gpt-4.1-mini"),
)
```
This only changes extraction-style LLM calls used by tools such as `extract`; it does not replace the main planner. Custom tools that request `page_extraction_llm` are owned by `../tools-and-actions/SKILL.md`.
## Fallback Models
Use `fallback_llm` for resilience when the primary model fails with provider/rate-limit/server-style errors after the primary adapter's own retries are exhausted.
```python
from browser_use import Agent, ChatBrowserUse, ChatOpenAI
agent = Agent(
task="Open https://example.com and summarize the page.",
llm=ChatBrowserUse(),
fallback_llm=ChatOpenAI(model="gpt-4.1-mini"),
)
history = await agent.run(max_steps=15)
if agent.is_using_fallback_llm:
print(f"Switched to {agent.current_llm_model}")
```
See `references/cost-and-fallbacks.md` for failure classes, retry implications, and cost-aware patterns.
## Cost and Token Tracking
Set `calculate_cost=True` on `Agent` to populate `history.usage` and log usage summaries where adapter usage data is available. Browser Use token costing can use built-in pricing, OpenRouter pricing, custom mappings, and a configurable pricing URL.
```python
agent = Agent(task="...", llm=ChatBrowserUse(), calculate_cost=True)
history = await agent.run(max_steps=20)
if history.usage:
print(history.usage.total_tokens, history.usage.total_cost)
```
Use `pricing_url=...` only when the user has a trusted model-pricing source. See `references/cost-and-fallbacks.md` for fields and caveats.
## Validation Checks
Run these lightweight checks before debugging a full web task:
```bash
python - <<'PY'
from browser_use import Agent, ChatBrowserUse, ChatOpenAI
from browser_use.llm import ChatGoogle, ChatAnthropic
print(Agent, ChatBrowserUse, ChatOpenAI, ChatGoogle, ChatAnthropic)
PY
```
Check credentials without revealing values:
```bash
python - <<'PY'
import os
for name in ["BROWSER_USE_API_KEY", "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "GOOGLE_API_KEY"]:
print(name, "set" if os.getenv(name) else "missing")
PY
```
If `ChatBrowserUse()` raises `BROWSER_USE_API_KEY is not set`, either set the key or choose a different adapter with its own credentials.
## Troubleshooting First Steps
Start with `references/troubleshooting.md`, then narrow the failure:
- Import failure: verify package install, adapter import path, and optional extras for the provider.
- Authentication failure: confirm the right env var is set in the same shell or process running Python; do not log key contents.
- Structured-output failure: simplify the Pydantic model, cap steps, inspect `history.final_result()`, then validate with `model_validate_json`.
- Extraction failure: confirm `page_extraction_llm` is configured and the task tells the agent to use extraction where appropriate.
- Fallback not used: check whether the primary model is still retrying internally, or whether the error is not a model provider/rate-limit/server error.
- Cost missing: confirm `calculate_cost=True`, the adapter returns usage, and pricing data exists for the model.
## Hard Case Patterns
Support multi-skill requests by routing only the model/output portion here. Examples:
- Authenticated production extraction with `Browser(use_cloud=True)`, `ChatBrowserUse`, a custom 2FA tool, and structured Pydantic output: use this sub-skill for model/output schema and fallback; route cloud browser to `../browser-control/SKILL.md` or production deployment to `../production-integrations/SKILL.md`; route 2FA tool to `../tools-and-actions/SKILL.md`.
- Failure recovery where a user reports `ValidationError` after `history.final_result()`: use this sub-skill to repair schema/output parsing, then route run-loop or browser failures to the appropriate sibling only if model/output fixes do not explain the symptom.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!