Use the GPT-5 preset to build an agent that swaps the standard FileEditorTool for ApplyPatchTool.
The GPT-5 preset is an opt-in agent preset for patch-based file editing. Calling get_gpt5_agent(llm) creates an agent that uses ApplyPatchTool instead of the standard FileEditorTool, while leaving the default preset unchanged for everything else.
"""Example: Using GPT-5 preset with ApplyPatchTool for file editing.This example demonstrates how to enable the GPT-5 preset, which swaps thestandard claude-style FileEditorTool for ApplyPatchTool.Usage: export OPENAI_API_KEY=... # or set LLM_API_KEY # Optionally set a model (we recommend a mini variant if available): # export LLM_MODEL=( # "openai/gpt-5.2-mini" # or fallback: "openai/gpt-5.1-mini" or "openai/gpt-5.1" # ) uv run python examples/04_llm_specific_tools/01_gpt5_apply_patch_preset.py"""import osfrom openhands.sdk import LLM, Agent, Conversationfrom openhands.tools.preset.gpt5 import get_gpt5_agent# Resolve API key from envapi_key = os.getenv("LLM_API_KEY") or os.getenv("OPENAI_API_KEY")if not api_key: raise SystemExit("Please set OPENAI_API_KEY or LLM_API_KEY to run this example.")model = os.getenv("LLM_MODEL", "openai/gpt-5.1")base_url = os.getenv("LLM_BASE_URL", None)llm = LLM(model=model, api_key=api_key, base_url=base_url)# Build an agent with the GPT-5 preset (ApplyPatchTool-based editing)agent: Agent = get_gpt5_agent(llm)# Run in the current working directorycwd = os.getcwd()conversation = Conversation(agent=agent, workspace=cwd)conversation.send_message( "Create (or update) a file named GPT5_DEMO.txt at the repo root with " "two short lines describing this repository.")conversation.run()# Report costcost = llm.metrics.accumulated_costprint(f"EXAMPLE_COST: {cost}")
You can run the example code as-is.
The model name should follow the LiteLLM convention: provider/model_name (e.g., anthropic/claude-sonnet-4-5-20250929, openai/gpt-4o).
The LLM_API_KEY should be the API key for your chosen provider.
ChatGPT Plus/Pro subscribers: You can use LLM.subscription_login() to authenticate with your ChatGPT account and access Codex models without consuming API credits. See the LLM Subscriptions guide for details.
You can optionally set LLM_MODEL to a GPT-5 variant such as openai/gpt-5.2-mini, openai/gpt-5.1-mini, or openai/gpt-5.1.