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, AgentFlowNode, AgentState, AgentStream, BackoffStrategy,
16    BatchExecutionResult, CompactionResult, CompositeCatalog, ContextBudget, ContextCompactor,
17    DefaultFallback, FallbackAction, FallbackContext, FallbackStrategy, IntoToolError,
18    IntoToolResult, LocalCompactor, ParallelSafety, ResolvedModel, ResolvedRound, RetryPolicy,
19    StaticCatalog, StopReason, ToolArgs, ToolCatalog, ToolCategory, ToolError, ToolErrorKind,
20    ToolExecutor, ToolRegistration, ToolResult, ToolSnapshot, ToolUseConfig, ToolUseDeps,
21    ToolUseLoop, ToolUseResult, estimate_message, estimate_tokens, execute_batch_with,
22    initial_state,
23};
24
25// ─── 糖衣 API(第三层原型) ───
26
27/// 便捷创建 Agent — 生态包糖衣 API 原型。
28///
29/// 这是未来 `lellm-openai` / `lellm-anthropic` 等生态包中
30/// `create_agent()` 的简化版本。
31///
32/// # 示例
33/// ```ignore
34/// use lellm_agent::{create_agent, ToolRegistration};
35///
36/// // 无工具的简单 Agent
37/// let agent = create_agent(model);
38///
39/// // 带工具的 Agent
40/// let agent = create_agent_with_tools(model, vec![search, weather]);
41/// ```
42///
43/// 快速创建一个无工具的 Agent。
44pub fn create_agent(model: ResolvedModel) -> ToolUseLoop {
45    AgentBuilder::new(model).build()
46}
47
48/// 快速创建带工具的 Agent。
49pub fn create_agent_with_tools(
50    model: ResolvedModel,
51    tools: impl IntoIterator<Item = ToolRegistration>,
52) -> ToolUseLoop {
53    AgentBuilder::new(model).tools(tools).build()
54}
55
56/// 快速创建带系统提示的 Agent。
57pub fn create_agent_with_system(model: ResolvedModel, system_prompt: String) -> ToolUseLoop {
58    AgentBuilder::new(model)
59        .system_prompt(system_prompt)
60        .build()
61}
62
63/// 完整配置的便捷创建。
64pub fn create_agent_full(
65    model: ResolvedModel,
66    system_prompt: String,
67    tools: impl IntoIterator<Item = ToolRegistration>,
68    max_iterations: usize,
69) -> ToolUseLoop {
70    AgentBuilder::new(model)
71        .system_prompt(system_prompt)
72        .tools(tools)
73        .max_iterations(max_iterations)
74        .build()
75}