Repository navigation
Provider OpenAI
"model": { "provider": "openai" }, with any knowledge (knowledge.retrieval; HelpPuff's own by default). See Models and providers.
This page describes the whole "backend": { "type": "openai" }, still used for what does not split: a stored prompt (promptId), a vector store HelpPuff fills for you, or another base URL. A vector store you fill yourself works with any model: "knowledge": { "retrieval": { "type": "openai-vector-store", "vectorStoreId": "vs_…" } }.
Answers with OpenAI's Responses API. Knowledge comes from an OpenAI vector store (File Search), or from HelpPuff's own knowledge base.
npx @knowtific/helppuff init --url acme.com --backend openai --api-key "$OPENAI_API_KEY"
# or later:
helppuff secret set OPENAI_API_KEY"backend": {
"type": "openai",
"model": "gpt-5-mini",
"apiKey": { "env": "OPENAI_API_KEY" }
}| Option | Default | |
|---|---|---|
model |
gpt-5-mini |
Any Responses model |
apiKey |
{ "env": "OPENAI_API_KEY" } |
By environment variable name |
retrieval |
— |
"helppuff": answer from HelpPuff's knowledge base (crawled on your Cloudflare account) instead of a vector store |
vectorStoreId |
— | Filled in by helppuff knowledge sync
|
promptId |
— | A stored prompt in the OpenAI dashboard; used instead of prompt.md
|
baseUrl |
OpenAI's | Another Responses-compatible endpoint, e.g. Azure OpenAI |
OpenAI File Search (the default for this backend). helppuff knowledge sync
crawls your site (up to knowledge.website.maxPages, default 50) and uploads
it, with knowledge.files, to a vector store it creates; the id is written to
vectorStoreId. Run it again to refresh.
HelpPuff's knowledge base ("retrieval": "helppuff"). Your site is crawled
into Vectorize and D1 on your Cloudflare account, exactly as with the default
backend, with the same dashboard tools (choose pages, files, facts, test a
question). OpenAI only writes the answer: the passages are added to its
instructions, and the sources come back as links. This is usually the better
choice: retrieval stays free and on your account, and switching models later
changes nothing else.
helppuff config set backend.retrieval helppuff && helppuff deployprompt.md is sent as the instructions, versioned like every other backend.
Or keep the prompt in OpenAI's dashboard as a stored prompt and set
promptId. It is then edited and versioned there, and prompt.md is not used.
- Multi-turn conversations use
previous_response_id(OpenAI keeps the history, withstore: true); the session holds only the id. - Rich messages (chips, cards, links) are function calls the model makes; they are rendered, never executed.
- Replies stream.
Start
Tutorials
- All tutorials
- Order tracking
- Send chats to your CRM
- Nearest store
- Verified account changes
- Logged-in customer support
- Product and stock
- Hot leads to Slack
- Knowledge base or tool?
- Testing and monitoring
- Why the AI never books
Configure
- Configuration
- Configuration reference
- CLI reference
- Knowledge base
- Prompt and instructions
- Tools: your APIs in the chat
- Agent files: import and export
- Signed-in visitors
- The widget
- The playground
- Leads and callbacks
- Jobs
- Photos and files
- Bookings and the calendar
- Integrations
- Live chat
- Telegram
- Webhooks
- Email notifications
API
API reference
- Overview
- Account
- Chat
- Conversations
- Live chat
- Labels and notes
- Leads
- Callbacks
- Jobs
- Appointments
- Integrations
- Knowledge
- Prompt
- Tools
- Settings
- Webhooks
- Analytics
- Team
- API keys
- Audit
Providers
- Overview
- Models and providers
- Custom model
- Custom knowledge base
- Workers AI (default)
- AI models: speed, quality, cost
- Cloudflare AI Search
- OpenAI
- Gemini
- Anthropic Claude
- Retell
- Your own API
Operate
- Deployment
- Turn on Turnstile
- Upgrading
- Costs and limits
- Cloudflare Free plan limits
- Security
- Troubleshooting
Build