langchainrust 0.2.9

A LangChain-inspired framework for building LLM applications in Rust. Supports OpenAI, Agents, Tools, Memory, Chains, RAG, BM25, Hybrid Retrieval, LangGraph, and native Function Calling.
// src/lib.rs
//! LangChain Rust - A LangChain-compatible framework for building LLM applications
//!
//! This crate is a Rust implementation inspired by LangChain Python.
//!
//! # Example
//! ```
//! use langchainrust::core::RunnableConfig;
//! use langchainrust::core::runnables::Runnable;
//!
//! let config = RunnableConfig::new()
//!     .with_tag("example")
//!     .with_run_name("my_run");
//! ```

#[cfg(test)]
extern crate tempfile;

pub mod core;
pub mod schema;
pub mod language_models;
pub mod tools;
pub mod agents;
pub mod memory;
pub mod chains;
pub mod embeddings;
pub mod vector_stores;
pub mod retrieval;
pub mod prompts;
pub mod callbacks;
pub mod langgraph;

// 重新导出常用类型
pub use core::{
    Runnable, RunnableConfig, BaseLanguageModel, BaseChatModel, 
    BaseTool, Tool, ToolError, ToolRegistry,
    ToolDefinition, ToolCall, ToolCallResult, FunctionDefinition, FunctionCall,
};
pub use core::tools::StructuredOutput;
pub use schema::{Message, MessageType};
pub use language_models::{OpenAIChat, OpenAIConfig, OllamaChat, OllamaConfig};
pub use tools::{Calculator, CalculatorInput, DateTimeTool, DateTimeInput, SimpleMathTool, MathInput, URLFetchTool, URLFetchInput};
pub use agents::{AgentAction, AgentFinish, AgentStep, AgentOutput, ToolInput, BaseAgent, AgentExecutor, AgentError, ReActAgent, FunctionCallingAgent};
pub use core::tools::to_tool_definition;
pub use memory::{BaseMemory, MemoryError, ChatMessageHistory, ConversationBufferMemory, ConversationBufferWindowMemory, ConversationSummaryMemory, ConversationSummaryBufferMemory};
pub use chains::{BaseChain, ChainError, ChainResult, LLMChain, LLMChainBuilder, SequentialChain, ConversationChain, ConversationChainBuilder, RouterChain, LLMRouterChain, RouteDestination, RetrievalQA};

// Embeddings
pub use embeddings::{Embeddings, EmbeddingError, OpenAIEmbeddings, OpenAIEmbeddingsConfig, MockEmbeddings, cosine_similarity};

// Vector Stores
pub use vector_stores::{Document, SearchResult, VectorStore, VectorStoreError, InMemoryVectorStore, VectorStoreProvider, VectorStoreType, VectorStoreBuilder};
pub use vector_stores::{ChunkDocument, ChunkedDocumentStoreTrait, InMemoryChunkedDocumentStore, ChunkedDocumentStore};

#[cfg(feature = "qdrant-integration")]
pub use vector_stores::{QdrantVectorStore, QdrantConfig};

#[cfg(feature = "mongodb-persistence")]
pub use vector_stores::{MongoChunkedDocumentStore, MongoStoreConfig};

// Retrieval
pub use retrieval::{Retriever, SimilarityRetriever, RetrieverTrait, TextSplitter, RecursiveCharacterSplitter, PDFLoader, CSVLoader, DocumentLoader, LoaderError};
pub use retrieval::{BM25Retriever, BM25Index, BM25Params, Tokenizer, ChunkedBM25Retriever, ChunkedSearchResult, AutoMergingConfig};
pub use retrieval::{HybridRetriever, RetrievedDocument, RetrievalSource, reciprocal_rank_fusion, ChunkedHybridRetriever};
pub use retrieval::{UnifiedHybridIndex, HybridIndexConfig, HybridSearchResult};

// Prompts
pub use prompts::{PromptTemplate, ChatPromptTemplate};

// Callbacks
pub use callbacks::{CallbackHandler, CallbackManager, RunTree, RunType, LangSmithClient, LangSmithConfig, LangSmithError, StdOutHandler, LangSmithHandler, FileCallbackHandler, LogFormat};

// LangGraph
pub use langgraph::{
    StateSchema, StateUpdate, Reducer, ReplaceReducer, AppendReducer, AppendMessagesReducer, AppendStepsReducer,
    GraphNode, NodeResult, NodeConfig, AsyncNode, AsyncFn,
    GraphEdge, ConditionalEdge, EdgeTarget, FunctionRouter, AsyncFunctionRouter,
    StateGraph, GraphBuilder, START, END,
    CompiledGraph, GraphInvocation, StreamEvent, ExecutionStep, GraphExecution, ParallelInvocation, ParallelBranch,
    GraphError, GraphResult,
    Checkpointer, MemoryCheckpointer, ThreadSafeMemoryCheckpointer, FileCheckpointer, CheckpointData,
    AgentState, MessageEntry, MessageRole, StepEntry,
    SubgraphNode, SubgraphBuilder,
    GraphPersistence, GraphDefinition, NodeDefinition, EdgeDefinition, NodeType, EdgeType, RouterDefinition,
    MemoryPersistence, FilePersistence,
};