Skip to main content

Documentation Index

Fetch the complete documentation index at: https://gomodel.enterpilot.io/docs/llms.txt

Use this file to discover all available pages before exploring further.

GoModel calls Oracle Generative AI through Oracle’s OpenAI-compatible inference endpoint. Setup needs an OCI IAM policy for generativeaiapikey, a region-specific base URL, and a configured model list (Oracle’s /models is not reliably available on the API-key flow).

1. Add the OCI policy

Allow any-user to use generative-ai-family in tenancy where ALL {request.principal.type='generativeaiapikey'}
This tenancy-level policy is enough for testing. In production, narrow it to a compartment, API key, or specific model.

2. Configure

ORACLE_BASE_URL=https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/v1
ORACLE_API_KEY=...
ORACLE_MODELS=openai.gpt-oss-120b,xai.grok-3
GOMODEL_MASTER_KEY=change-me
ORACLE_MODELS is a comma-separated list (whitespace trimmed). Behavior follows the global CONFIGURED_PROVIDER_MODELS_MODEfallback (default) uses the list when Oracle’s /models is unavailable or empty; allowlist exposes only configured models and skips the upstream call. Or in config.yaml:
providers:
  oracle:
    type: oracle
    base_url: "${ORACLE_BASE_URL}"
    api_key: "${ORACLE_API_KEY}"
    models:
      - openai.gpt-oss-120b
If both are set, ORACLE_MODELS overrides YAML models: for the matching provider.

3. Run GoModel

docker run --rm -p 8080:8080 --env-file .env enterpilot/gomodel

4. Verify

curl -s http://localhost:8080/v1/chat/completions \
  -H "Authorization: Bearer change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai.gpt-oss-120b",
    "messages": [{"role": "user", "content": "Reply with the single word ok."}],
    "max_tokens": 80
  }'
GET /v1/models returns models such as openai.gpt-oss-120b with owned_by: "oracle". Responses API works the same way.
Use a high enough max_tokens budget. Some Oracle-backed reasoning models can spend short completions on reasoning content before emitting final assistant text.

Multiple Oracle providers

Use suffixed env vars to register a second Oracle instance:
ORACLE_US_BASE_URL=https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/v1
ORACLE_US_API_KEY=...
ORACLE_US_MODELS=openai.gpt-oss-120b
This registers provider oracle-us. Reach for YAML only when generated names don’t fit or you want per-provider resilience overrides.

Not yet integrated

  • Native OCI-based model auto-discovery (would remove the need for ORACLE_MODELS / YAML models:).
  • Reliable use of Oracle’s OpenAI-compatible /models endpoint on the API-key flow.

Troubleshooting

  • 404 Authorization failed or requested resource not found — missing OCI policy, wrong region, or model not available to the account.
  • model registry has no models — set ORACLE_MODELS or YAML models:.
  • OCI CLI works but Oracle bearer requests fail — different auth flows. OCI CLI uses API signing keys; Oracle Generative AI inference uses the Generative AI bearer API key.

References