Developing Models
This guide will introduce you to developing and adding a new model (Model) in your plugin. A model definition describes the basic properties, capabilities, pricing, and parameter configuration of an LLM.
Prerequisites
Before you begin, please ensure that you have:
- Initialized your plugin project.
- Installed the
@choiceopen/atomemo-plugin-sdk-jsdependency.
1. File Structure
It's recommended to place model definition files in the src/models directory for better organization.
text
src/
models/
my-model.ts # Model definition file
index.ts # Plugin entry point2. Implement Model Definition
You need to create an object that implements the ModelDefinition interface. This interface defines all metadata for your model.
Here's a complete example implementing OpenAI GPT-4:
typescript
import type { ModelDefinition } from "@choiceopen/atomemo-plugin-sdk-js/types"
export const openaiGpt4 = {
// Unique identifier for the model
// Recommended format: "provider/model_name", e.g., "openai/gpt-4"
// Rules: Only English letters, numbers, underscores, hyphens, and slashes allowed. Length: 4-64
name: "openai/gpt-4",
// Short description of the model (supports multi-language)
description: { en_US: "OpenAI's GPT-4 language model" },
// Display name (supports multi-language)
display_name: { en_US: "GPT-4" },
// Model icon, supports Emoji or image URL
icon: "🔷",
// Model type, currently fixed as "llm"
model_type: "llm",
// Supported input types: text (text), image (image), file (file)
input_modalities: ["text", "image"],
// Supported output types
output_modalities: ["text"],
// Parameter override configuration
// Customize default parameters, max and min values for the model
override_parameters: {
temperature: {
default: 1.0,
maximum: 2.0,
minimum: 0.0,
},
},
// Pricing configuration (optional)
// For estimating the cost of model calls
pricing: {
currency: "USD", // Currency unit
input: 0.03, // Price per 1K input tokens
output: 0.06, // Price per 1K output tokens
},
// List of unsupported parameters
// Parameters listed here won't be displayed in the UI configuration panel
unsupported_parameters: ["seed", "verbosity"],
} satisfies ModelDefinitionKey Fields Explained
- name: Must be unique. The plugin system uses this name to identify models.
- input_modalities: Defines content types the model can handle. Include
"image"if the model supports vision capabilities. - pricing: If not provided, the model is considered free. All prices are typically based on tokens or requests.
- unsupported_parameters: Atomemo provides a set of common LLM parameters (such as
temperature,stream, etc.). Declare here any parameters your model doesn't support.
3. Register the Model
After defining your model, you need to register it in your plugin's main entry file (usually src/index.ts).
typescript
import { createPlugin } from "@choiceopen/atomemo-plugin-sdk-js"
import { openaiGpt4 } from "./models/openai-gpt4"
// ... Initialize plugin
const plugin = await createPlugin({
// ...
})
// Register model
plugin.addModel(openaiGpt4)
// Run plugin
plugin.run()Reference
- Type Definition:
@choiceopen/atomemo-plugin-schema/typesforModelDefinition - Schema:
@choiceopen/atomemo-plugin-schema/schemaforModelDefinitionSchema