Framework setup
Pick your stack · API reference
Oracle speaks the OpenAI wire format at https://oracle.nuvocode.com/v1.
Your API key is <app>:<secret> (create one with
pnpm create-app). List the models your app may use with GET /v1/models.
1. Install the Laravel AI SDK
composer require laravel/ai
php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"
2. Add Oracle to config/ai.php → providers
'oracle' => [
'driver' => 'openai-compatible',
'url' => env('ORACLE_URL', 'https://oracle.nuvocode.com/v1'),
'key' => env('ORACLE_API_KEY'),
'models' => [
'text' => ['default' => env('ORACLE_TEXT_MODEL', '@cf/meta/llama-3.1-8b-instruct-fp8')],
'embeddings' => ['default' => env('ORACLE_EMBED_MODEL', '@cf/baai/bge-base-en-v1.5')],
],
],
To make it the default, also set 'default' => 'oracle' and
'default_for_embeddings' => 'oracle' in the same file.
3. .env
ORACLE_URL=https://oracle.nuvocode.com/v1
ORACLE_API_KEY=my-app:my-secret
4. Use it
use Laravel\Ai\Embeddings;
$reply = agent()->prompt('Hello', provider: 'oracle');
$vectors = Embeddings::for(['Hello'])->generate(provider: 'oracle');
1. Install
npm install openai
2. .env
ORACLE_URL=https://oracle.nuvocode.com/v1
ORACLE_API_KEY=my-app:my-secret
3. Use it
import OpenAI from "openai";
const oracle = new OpenAI({
baseURL: process.env.ORACLE_URL,
apiKey: process.env.ORACLE_API_KEY,
});
const res = await oracle.chat.completions.create({
model: "@cf/meta/llama-3.1-8b-instruct-fp8",
messages: [{ role: "user", content: "Hello" }],
});
console.log(res.choices[0].message.content);
1. Install
npm install openai @nestjs/config
2. .env
ORACLE_URL=https://oracle.nuvocode.com/v1
ORACLE_API_KEY=my-app:my-secret
3. Provide a client (oracle.module.ts)
import { Global, Module } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import OpenAI from "openai";
export const ORACLE = Symbol("ORACLE");
@Global()
@Module({
providers: [{
provide: ORACLE,
inject: [ConfigService],
useFactory: (cfg: ConfigService) => new OpenAI({
baseURL: cfg.getOrThrow("ORACLE_URL"),
apiKey: cfg.getOrThrow("ORACLE_API_KEY"),
}),
}],
exports: [ORACLE],
})
export class OracleModule {}
4. Inject it
constructor(@Inject(ORACLE) private readonly oracle: OpenAI) {}
const res = await this.oracle.chat.completions.create({
model: "@cf/meta/llama-3.1-8b-instruct-fp8",
messages: [{ role: "user", content: "Hello" }],
});
Import OracleModule (and ConfigModule.forRoot()) in AppModule.
curl https://oracle.nuvocode.com/v1/chat/completions \
-H "Authorization: Bearer my-app:my-secret" \
-H "Content-Type: application/json" \
-d '{"model":"@cf/meta/llama-3.1-8b-instruct-fp8","messages":[{"role":"user","content":"Hello"}]}'