A TypeScript port of [chat-completion-md](https://github.com/S1M0N38/chat-completion-md) that converts between JSON and Markdown formats for OpenAI chat completions.
npm install chat-completion-md-jsA TypeScript port of chat-completion-md that converts between JSON and Markdown formats for OpenAI chat completions.
This project provides utilities to convert between JSON format (used for OpenAI's Chat Completion API) and a more readable Markdown format, making it easier to work with and version control your prompts.
This project is a TypeScript port of chat-completion-md by S1M0N38. The original project was written in Python, and this version maintains the same functionality while leveraging TypeScript and Zod for type safety and validation.
``bashUsing bun
bun add chat-completion-md-ts
๐ Usage
$3
Convert a JSON chat completion request to a markdown format:
`typescript
import { jsonToMd } from 'chat-completion-md-ts';const json =
{;const markdown = jsonToMd(json);
console.log(markdown);
`Output:
`markdown
---
model: gpt-4
temperature: 0.7
---system
You are a helpful assistant.
---
user
Hello, how are you?
---
`$3
Convert a markdown format back to JSON for use with the OpenAI API:
`typescript
import { mdToJson } from 'chat-completion-md-ts';const markdown =
---You are a helpful assistant.
---
Hello, how are you?
---;
const json = mdToJson(markdown);
console.log(JSON.parse(json));
`
This library uses Zod for runtime type checking and validation. It will validate:
- Required fields (e.g., model)system
- Message roles (, user, assistant, developer, tool)
- Data types for all fields
- Structure of the JSON and Markdown
typescript
{
frequency_penalty?: number;
logit_bias?: Record;
max_tokens?: number;
model: string;
presence_penalty?: number;
stream?: boolean;
temperature?: number;
top_p?: number;
}
`$3
`typescript
{
content: string;
role: "assistant" | "developer" | "system" | "tool" | "user";
}
`๐งช Testing
Tests are written using Bun's test runner. To run the tests:
`bash
bun test
``MIT
Contributions are welcome! Please feel free to submit a Pull Request.
If you find a bug or have a feature request, please create an issue on the GitHub repository.