openai-d ~main
OpenAI Client APIs
To use this package, run the following command in your project's root directory:
						Manual usage
						
						Put the following dependency into your project's dependences section:
					
OpenAI API for D
This library provides unofficial D clients for OpenAI API.
Overview
Key capabilities are summarized below.
Installation
Once dmd and dub are available, add this library to your project:
dub add openai-d
Quick Start
import openai;
auto client = new OpenAIClient();
auto res = client.chatCompletion(
    chatCompletionRequest(openai.GPT4O, [userChatMessage("Hello!")]));
writeln(res.choices[0].message.content);
See the examples directory for full sample programs.
Features
Endpoint
- [x] OpenAI
 - [x] Azure OpenAI Service
 
API
OpenAI
- [x] Responses API
 - [x] Chat
 - [x] tools (function_call)
 - [x] structured output
 - [x] input vision
 - [ ] stream (design)
 - [ ] Realtime (Beta) (TODO)
 - [x] Audio
 - [x] speech
 - [x] transcription
 - [x] translations
 - [x] Images
 - [x] Embeddings
 - [ ] Evals (TODO)
 - [ ] Fine-tunings (TODO)
 - [ ] Graders (TODO)
 - [ ] Batch (TODO)
 - [x] Files — upload, list, retrieve, delete, download
 - [ ] Uploads (TODO)
 - [x] Models
 - [x] Moderations
 - [ ] Vector stores (TODO)
 - [ ] Containers (TODO)
 - [ ] Assistants (Beta) (TODO)
 - [ ] Administration (WIP)
 - [x] Admin API Keys
 - [x] Invites
 - [x] Users
 - [x] Projects
 - [x] Project users
 - [x] Project service accounts
 - [x] Project API keys
 - [x] Project rate limits
 - [x] Audit logs
 - [x] Usage
 - [ ] Certificates (Beta WIP)
 
Legacy
- [x] Completions (Legacy)
 
Deprecated
- Edits
 - Use chat API instead. See: https://platform.openai.com/docs/deprecations/edit-models-endpoint
 
Optimization
- [ ] Switch HTTP client to 
requests(TODO)- Not adopted because it is less convenient due to Windows' handling of system certificates. Version flag is required for support.
 - Adopting 'requests' is expected to lead to more efficient use of Fiber in vibe.d.
 
 
Completion (Legacy)
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /completions
auto message = completionRequest("gpt-3.5-turbo-instruct", "Hello, D Programming Language!\n", 10, 0);
message.stop = "\n";
auto response = client.completion(message);
writeln(response.choices[0].text.chomp());
Embedding
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /embeddings
const request = embeddingRequest("text-embedding-3-small", "Hello, D Programming Language!");
auto response = client.embedding(request);
float[] embedding = response.data[0].embedding;
writeln(embedding.length); // text-embedding-3-small -> 1536
Files
import std.stdio;
import std.file : write;
import openai;
auto client = new OpenAIClient();
auto up = uploadFileRequest("input.jsonl", FilePurpose.FineTune);
auto uploaded = client.uploadFile(up);
auto retrieved = client.retrieveFile(uploaded.id);
writeln("retrieved: ", retrieved.filename);
auto content = client.downloadFileContent(uploaded.id);
write("copy.jsonl", content);
client.deleteFile(uploaded.id);
See examples/files for the full example.
Moderation
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /moderations
const request = moderationRequest("D is a general-purpose programming language with static typing, systems-level access, and C-like syntax. With the D Programming Language, write fast, read fast, and run fast.");
auto response = client.moderation(request);
if (response.results[0].flagged)
    writeln("Warning!");
else
    writeln("Probably safe.");
Transcription
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /audio/transcriptions
auto request = transcriptionRequest("audio.mp3", "whisper-1");
auto response = client.transcription(request);
writeln(response.text);
See examples/audio_transcription for the full example.
Translation
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /audio/translations
auto request = translationRequest("audio.mp3", "whisper-1");
auto response = client.translation(request);
writeln(response.text);
See examples/audio_translation for the full example.
Images
import std;
import openai;
// Load API key from environment variable
auto client = new OpenAIClient();
// POST /images/generations
auto request = imageGenerationRequest("A cute baby sea otter");
request.responseFormat = ImageResponseFormatB64Json;
auto response = client.imageGeneration(request);
write("image.png", Base64.decode(response.data[0].b64Json));
See examples/images for the full example.
Administration
import std;
import openai;
auto client = new OpenAIAdminClient();
auto list = client.listProjects(listProjectsRequest(20));
writeln(list.data.length);
Requires an admin API key. See examples/administration* for complete examples.
OpenAIClientConfig
Environment variables
import std.process;
import openai;
environment["OPENAI_API_KEY"] = "<Your API Key>";
environment["OPENAI_ORGANIZATION"] = "<Your Organization>";
environment["OPENAI_API_BASE"] = "https://example.api.cognitive.microsoft.com"; // optional
environment["OPENAI_DEPLOYMENT_ID"] = "<Your deployment>"; // Azure only
environment["OPENAI_API_VERSION"] = "2024-10-21"; // Azure only
auto config = OpenAIClientConfig.fromEnvironment();
assert(config.apiKey == "<Your API Key>");
assert(config.organization == "<Your Organization>");
assert(config.apiBase == "https://example.api.cognitive.microsoft.com");
Development
Requirements
dmd and dub must be installed. Use the official D installer.
License
This project is released under the MIT license.
- ~main released 5 months ago
 - lempiji/openai-d
 - MIT
 
- Authors:
 - Dependencies:
 - mir-ion
 - Versions:
 - 
						
Show all 11 versions0.9.0 2025-Jun-29 0.8.0 2025-Jun-08 0.7.0 2025-Feb-28 0.6.0 2025-Jan-19 0.5.0 2024-Aug-13  - Download Stats:
 - 
						
- 
								
0 downloads today
 - 
								
0 downloads this week
 - 
								
3 downloads this month
 - 
								
142 downloads total
 
 - 
								
 - Score:
 - 1.5
 - Short URL:
 - openai-d.dub.pm