Provider OpenAI - knowtific/helppuff GitHub Wiki
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.
Set up
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 |
Knowledge: two ways
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 deploy
The prompt
prompt.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.
Notes
- 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.