Skip to main content

lellm_agent/
lib.rs

1//! lellm-agent — Agent 运行时。
2//!
3//! 提供完整的 Agent 运行时能力:工具系统、Agent Loop、
4//! 循环检测、重试策略、Fallback 降级等。
5
6pub mod hook;
7pub mod runtime;
8
9// Re-export schemars & serde so derive(Tool) / #[tool] macros can reference them.
10pub use schemars;
11pub use serde;
12
13pub use hook::{AgentHook, AgentHookContext, AgentHookSnapshot, NoOpAgentHook, TracingAgentHook};
14pub use runtime::{
15    AgentBuilder, AgentEvent, AgentState, AgentStream, BackoffStrategy, BatchExecutionResult,
16    CompactionResult, CompositeCatalog, ContextBudget, ContextCompactor, DefaultFallback,
17    ExecutableTool, FallbackAction, FallbackContext, FallbackStrategy, IntoToolError,
18    IntoToolResult, LocalCompactor, ParallelSafety, ResolvedModel, ResolvedRound, RetryPolicy,
19    StaticCatalog, StopReason, ToolArgs, ToolCachePolicy, ToolCatalog, ToolCategory, ToolError,
20    ToolErrorKind, ToolExecutor, ToolFn, ToolResult, ToolSnapshot, ToolUseConfig, ToolUseDeps,
21    ToolUseLoop, ToolUseResult, estimate_message, estimate_tokens, execute_batch_with,
22};
23
24// 从 core 再导出 Prompt
25pub use lellm_core::Prompt;
26
27// ─── 糖衣 API(第三层原型) ───
28
29/// 便捷创建 Agent — 生态包糖衣 API 原型。
30///
31/// 这是未来 `lellm-openai` / `lellm-anthropic` 等生态包中
32/// `create_agent()` 的简化版本。
33///
34/// # 示例
35/// ```ignore
36/// use lellm_agent::{create_agent, ExecutableTool};
37///
38/// // 无工具的简单 Agent
39/// let agent = create_agent(model);
40///
41/// // 带工具的 Agent
42/// let agent = create_agent_with_tools(model, vec![search, weather]);
43/// ```
44///
45/// 快速创建一个无工具的 Agent。
46pub fn create_agent(model: ResolvedModel) -> ToolUseLoop {
47    AgentBuilder::new(model).compile()
48}
49
50/// 快速创建带工具的 Agent。
51pub fn create_agent_with_tools(
52    model: ResolvedModel,
53    tools: impl IntoIterator<Item = ExecutableTool>,
54) -> ToolUseLoop {
55    AgentBuilder::new(model).tools(tools).compile()
56}
57
58/// 快速创建带系统提示的 Agent。
59pub fn create_agent_with_system(model: ResolvedModel, system: impl Into<Prompt>) -> ToolUseLoop {
60    AgentBuilder::new(model).system(system).compile()
61}
62
63/// 完整配置的便捷创建。
64pub fn create_agent_full(
65    model: ResolvedModel,
66    system: impl Into<Prompt>,
67    tools: impl IntoIterator<Item = ExecutableTool>,
68    max_iterations: usize,
69) -> ToolUseLoop {
70    AgentBuilder::new(model)
71        .system(system)
72        .tools(tools)
73        .max_iterations(max_iterations)
74        .compile()
75}