Documentation
¶
Overview ¶
Package llm is the LLM port for jess/agentcore-based agents, plus a home for native, per-provider adapters that satisfy it.
LLM is the ubiquitous term for "the model the agent talks to." It mirrors the agentcore ChatModel contract, so anything satisfying LLM plugs directly into jess.WithModel — but naming it here keeps the vendor type out of consumers' domain language.
Each provider adapter lives in its own subpackage (llm/anthropic, and later llm/openai, ...) and is native: it speaks that provider's own API/SDK, not an OpenAI-compatible translation. An adapter is an anti-corruption layer — the only package allowed to import its provider's SDK — translating that SDK to and from agentcore message / tool / stream-event types.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LLM ¶
type LLM interface {
Generate(ctx context.Context, messages []agentcore.Message, tools []agentcore.ToolSpec, opts ...agentcore.CallOption) (*agentcore.LLMResponse, error)
GenerateStream(ctx context.Context, messages []agentcore.Message, tools []agentcore.ToolSpec, opts ...agentcore.CallOption) (<-chan agentcore.StreamEvent, error)
SupportsTools() bool
}
LLM is the model port the agent consumes. It is the agentcore ChatModel contract under a domain name: any LLM is usable directly as an agent's model. agentcore types cross this boundary freely — they are the ubiquitous language jess is built on, not an isolated vendor. The isolated vendor is each provider's SDK, which only that provider's adapter imports.
type Meter ¶ added in v0.2.0
type Meter interface {
Observe(Usage)
}
Meter observes per-call Usage. Set one on an adapter's Config to capture tokens and latency for every generation. Implementations must be safe for concurrent use — adapters may call Observe from multiple goroutines.
type MeterFunc ¶ added in v0.2.0
type MeterFunc func(Usage)
MeterFunc adapts a plain function to a Meter.
type Usage ¶ added in v0.2.0
type Usage struct {
Provider string `json:"provider"`
Model string `json:"model"`
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
Latency time.Duration `json:"latency"`
// CacheReadTokens and CacheWriteTokens split out prompt-caching input tokens
// so a Meter can price the cache tiers (read ~0.1x, write ~1.25x-2x base
// input) and measure hit rate. Zero when the provider reports no caching or
// none was requested. PromptTokens is the uncached-input remainder, so the
// three are additive: total input = PromptTokens + CacheReadTokens + CacheWriteTokens.
CacheReadTokens int `json:"cache_read_tokens,omitempty"`
CacheWriteTokens int `json:"cache_write_tokens,omitempty"`
}
Usage reports the token counts and wall-clock latency of a single model call. Adapters populate it from the provider response and hand it to a Meter (when one is configured), so a consumer can record cost and latency without the adapter knowing anything about pricing.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package anthropic is the provider-native Anthropic model adapter: the anti-corruption layer that is the ONLY package allowed to import github.com/anthropics/anthropic-sdk-go.
|
Package anthropic is the provider-native Anthropic model adapter: the anti-corruption layer that is the ONLY package allowed to import github.com/anthropics/anthropic-sdk-go. |
|
Package deepseek is a native DeepSeek model adapter: an agentcore.ChatModel (llm.LLM) backed by DeepSeek's chat-completions API.
|
Package deepseek is a native DeepSeek model adapter: an agentcore.ChatModel (llm.LLM) backed by DeepSeek's chat-completions API. |
|
Package kimi is the provider-native Kimi (Moonshot) model adapter: an agentcore.ChatModel (llm.LLM) backed by Kimi's chat-completions API.
|
Package kimi is the provider-native Kimi (Moonshot) model adapter: an agentcore.ChatModel (llm.LLM) backed by Kimi's chat-completions API. |