EdgeAIG's picture
download
raw
4.1 kB
/**
* Wraps an AI model layer with provider and model metadata.
*
* A `Model` can be used anywhere its underlying `Layer` can be used. It also
* provides the current provider name and model name through the Effect context.
* This module includes the `Model` interface, the `ProviderName` and
* `ModelName` service tags, and the `make` constructor. Models can also capture
* their required services from the current context when they need to be used
* inside another Effect service.
*
* @since 4.0.0
*/
import * as Context from "../../Context.ts";
import * as Effect from "../../Effect.ts";
import * as Layer from "../../Layer.ts";
declare const TypeId: "~effect/ai/Model";
/**
* A Model represents a provider-specific AI service.
*
* **When to use**
*
* Use when you use a Model directly as a Layer to provide a particular model implementation
* to an Effect program, or use it as an Effect to "lift" dependencies of the
* Model constructor into the parent Effect when you want to use a Model from
* within an Effect service.
*
* @category models
* @since 4.0.0
*/
export interface Model<in out Provider, in out Provides, in out Requires> extends Layer.Layer<Provides | ProviderName | ModelName, never, Requires> {
readonly [TypeId]: typeof TypeId;
/**
* The provider identifier (e.g., "openai", "anthropic", "amazon-bedrock").
*/
readonly provider: Provider;
/**
* Returns a `Layer` with the requirements satisfied, using the current context.
*/
readonly captureRequirements: Effect.Effect<Layer.Layer<Provides | ProviderName | ModelName>, never, Requires>;
}
declare const ProviderName_base: Context.ServiceClass<ProviderName, "effect/unstable/ai/Model/ProviderName", string>;
/**
* Service tag that provides the current large language model provider name.
*
* **Details**
*
* This tag is automatically provided by Model instances and can be used to
* access the name of the provider that is currently in use within a given
* Effect program.
*
* @category services
* @since 4.0.0
*/
export declare class ProviderName extends ProviderName_base {
}
declare const ModelName_base: Context.ServiceClass<ModelName, "effect/unstable/ai/Model/ModelName", string>;
/**
* Service tag that provides the current large language model name.
*
* **Details**
*
* This tag is automatically provided by Model instances and can be used to
* access the name of the model that is currently in use within a given Effect
* program.
*
* @category services
* @since 4.0.0
*/
export declare class ModelName extends ModelName_base {
}
/**
* Creates a Model from a provider name and a Layer that constructs AI services.
*
* **Example** (Providing model metadata)
*
* ```ts
* import { Effect } from "effect"
* import type { Layer } from "effect"
* import { LanguageModel, Model } from "effect/unstable/ai"
*
* declare const bedrockLayer: Layer.Layer<LanguageModel.LanguageModel>
*
* // Model automatically provides ProviderName and ModelName services
* const checkProviderAndGenerate = Effect.gen(function*() {
* const provider = yield* Model.ProviderName
* const modelName = yield* Model.ModelName
*
* console.log(`Generating with: ${provider}/${modelName}`)
*
* return yield* LanguageModel.generateText({
* prompt: `Hello from ${provider}!`
* })
* })
*
* const program = checkProviderAndGenerate.pipe(
* Effect.provide(Model.make("amazon-bedrock", "claude-3-5-haiku", bedrockLayer))
* )
* // Will log: "Generating with: amazon-bedrock/claude-3-5-haiku"
* ```
*
* @category constructors
* @since 4.0.0
*/
export declare const make: <const Provider extends string, const Name extends string, Provides, Requires>(
/**
* Provider identifier (e.g., "openai", "anthropic", "amazon-bedrock").
*/
provider: Provider,
/**
* Model identifier (e.g., "gpt-5", "claude-3-5-haiku").
*/
modelName: Name,
/**
* Layer that provides the AI services for this provider.
*/
layer: Layer.Layer<Provides, never, Requires>) => Model<Provider, Provides, Requires>;
export {};
//# sourceMappingURL=Model.d.ts.map

Xet Storage Details

Size:
4.1 kB
·
Xet hash:
59f6c96e2478b26edcf46cfb848a9e7a8866499251fa33d6d38513f90607359b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.