Migrate a ChatGPT Plugin to a Custom GPT by exporting your existing OpenAPI specification, creating a new GPT in the GPT Builder, pasting the spec into the Actions configuration panel, mapping your authentication settings, and testing each endpoint. The process reuses your plugin’s API server and OpenAPI schema directly, so the backend stays the same while the configuration moves into the GPT Builder interface. This step-by-step guide covers the full migration with code examples for both manual and programmatic approaches.
Understanding the Architecture Differences
ChatGPT Plugins and Custom GPTs serve similar purposes but operate differently under the hood. Plugins used a manifest file (ai-plugin.json) and OpenAPI specifications to define endpoints. Custom GPTs use Actions, which are conceptually similar but require a different setup approach through the GPT Builder interface or the Assistants API.
The key distinction is that plugins required external server hosting with a publicly accessible HTTPS endpoint. Custom GPTs with Actions can connect to APIs the same way, but also benefit from a more streamlined configuration process directly within ChatGPT.
Step 1: Audit Your Current Plugin
Before migrating, document your plugin’s current functionality. Create a checklist of:
- All endpoints your plugin exposes
- Authentication requirements (API keys, OAuth flows)
- Input/output schemas for each action
- Any third-party dependencies
For example, a typical plugin manifest looks like this:
{
"name_for_model": "weather_plugin",
"name_for_human": "Weather Reporter",
"description_for_model": "Fetches current weather data for any location",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "https://api.example.com/openapi.yaml"
}
}
Step 2: Export Your OpenAPI Specification
Your plugin’s OpenAPI specification is the foundation for your Custom GPT Action. Locate your openapi.yaml or openapi.json file from the plugin repository. Review it for compatibility with the Custom GPT Actions format.
Key adjustments you may need to make:
- Ensure all endpoints use HTTPS
- Verify response schemas are properly defined
- Add operation IDs if missing (required for Actions)
openapi: 3.0.0
info:
title: Weather API
version: 1.0.0
paths:
/weather:
get:
operationId: getWeather
summary: Get current weather
parameters:
- name: location
in: query
required: true
schema:
type: string
responses:
'200':
description: Weather data
content:
application/json:
schema:
type: object
properties:
temperature:
type: number
conditions:
type: string
Step 3: Create Your Custom GPT
Navigate to ChatGPT and access the GPT Builder:
- Click your profile menu and select “My GPTs”
- Click “Create a GPT”
- Give your GPT a name and description
- Configure the Capabilities (Web Browsing, DALL-E Image Generation, Code Interpreter)
- Add your Action using the OpenAPI specification
In the Actions configuration panel, paste your refined OpenAPI specification. The GPT Builder will parse your endpoints and generate a configuration interface.
Step 4: Configure Authentication
Custom GPT Actions support multiple authentication methods. Map your plugin’s auth configuration to the appropriate Action auth type:
| Plugin Auth Type | Custom GPT Action Auth |
|---|---|
| None | No authentication |
| API Key | Header or query parameter |
| OAuth 2.0 | OAuth 2.0 configuration |
For API key authentication in Actions, specify how the key should be passed:
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
security:
- apiKey: []
Configure the authentication credentials in the Action settings panel, providing your API key or OAuth client credentials.
Step 5: Test Your Migrated GPT
The GPT Builder provides a testing panel where you can interact with your Custom GPT and verify the Actions work correctly. Run through each endpoint:
- Ask your GPT to perform an action your plugin supported
- Verify the API call executes successfully
- Check the response formatting matches expectations
- Test error handling with invalid inputs
Common issues during testing include:
- Missing authentication headers
- Incorrect parameter types
- API rate limiting
- Response parsing errors
Address each issue by adjusting your OpenAPI specification or updating the Action configuration.
Step 6: Deploy and Monitor
Once testing passes, save your Custom GPT and decide on visibility:
- Private: Only you can use the GPT
- Link sharing: Anyone with the link can use it
- Public: Listed in the GPT Store (if available in your region)
Monitor usage through the My GPTs dashboard. Track API call volumes and response times to ensure your backend can handle the load.
Advanced: Programmatic GPT Creation
For批量 migrating multiple plugins, use the Assistants API to create Custom GPTs programmatically:
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
assistant = client.beta.assistants.create(
name="Weather Reporter",
description="Fetches current weather data for any location",
model="gpt-4o",
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name or coordinates"
}
},
"required": ["location"]
}
}
}
]
)
This approach gives you version control over your GPT configurations and enables CI/CD pipelines for GPT management.
Conclusion
Migrating from ChatGPT Plugins to Custom GPTs requires exporting your OpenAPI specification, recreating the configuration in the GPT Builder, and thoroughly testing each action. The process is straightforward for simple plugins but may require additional work for complex authentication flows or multiple endpoints.
By following this step-by-step approach, you can preserve your plugin functionality while taking advantage of the more integrated Custom GPT experience. The GPT Builder’s interface simplifies much of the configuration overhead that plugins required.
Related Reading
Built by theluckystrike — More at zovo.one