[package]
edition = "2021"
name = "llm"
version = "1.3.8"
authors = [
"Tristan Granier <graniet75@gmail.com>",
"Jared Kofron <jared.kofron@gmail.com>",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "llm"
description = "A Rust library unifying multiple LLM backends."
homepage = "https://github.com/graniet/llm"
documentation = "https://docs.rs/llm"
readme = "README.md"
license = "MIT"
repository = "https://github.com/graniet/llm"
[features]
agent = []
anthropic = []
api = [
"dep:axum",
"dep:tower-http",
"dep:uuid",
]
audio-example = [
"agent",
"openai",
"dep:cpal",
"dep:hound",
"dep:ratatui",
"dep:crossterm",
"dep:anyhow",
"dep:parking_lot",
]
azure_openai = []
bedrock = [
"dep:awc",
"dep:aws-config",
"dep:aws-credential-types",
"dep:aws-sdk-bedrockruntime",
"dep:aws-smithy-types",
]
cli = [
"full",
"dep:anyhow",
"dep:clap",
"dep:arboard",
"dep:crossterm",
"dep:flexi_logger",
"dep:fuzzy-matcher",
"dep:pulldown-cmark",
"dep:ratatui",
"dep:syntect",
"dep:textwrap",
"dep:tokio-util",
"dep:unicode-segmentation",
"dep:unicode-width",
"dep:uuid",
"dep:shell-words",
"dep:portable-pty",
"dep:pest",
"dep:pest_derive",
]
cohere = []
deepseek = []
default = [
"cli",
"default-tls",
]
default-tls = ["reqwest/default-tls"]
elevenlabs = []
full = [
"openai",
"anthropic",
"ollama",
"deepseek",
"xai",
"phind",
"google",
"groq",
"azure_openai",
"api",
"elevenlabs",
"agent",
"cohere",
"mistral",
"openrouter",
"huggingface",
"bedrock",
]
google = []
groq = []
huggingface = []
logging = ["dep:env_logger"]
mistral = []
ollama = []
openai = []
openrouter = []
phind = []
rodio = ["dep:rodio"]
rustls-tls = ["reqwest/rustls-tls"]
xai = []
[lib]
name = "llm"
path = "src/lib.rs"
[[bin]]
name = "llm"
path = "src/bin/llm-cli.rs"
required-features = ["cli"]
[[example]]
name = "agent_audio_example"
path = "examples/agent_audio_example.rs"
required-features = ["audio-example"]
[[example]]
name = "agent_builder_example"
path = "examples/agent_builder_example.rs"
[[example]]
name = "anthropic_example"
path = "examples/anthropic_example.rs"
[[example]]
name = "anthropic_streaming_example"
path = "examples/anthropic_streaming_example.rs"
[[example]]
name = "anthropic_thinking_example"
path = "examples/anthropic_thinking_example.rs"
[[example]]
name = "anthropic_vision_example"
path = "examples/anthropic_vision_example.rs"
[[example]]
name = "api_deepclaude_example"
path = "examples/api_deepclaude_example.rs"
[[example]]
name = "api_example"
path = "examples/api_example.rs"
[[example]]
name = "azure_openai_embedding_example"
path = "examples/azure_openai_embedding_example.rs"
[[example]]
name = "azure_openai_example"
path = "examples/azure_openai_example.rs"
[[example]]
name = "azure_openai_tool_calling_example"
path = "examples/azure_openai_tool_calling_example.rs"
[[example]]
name = "bedrock_example"
path = "examples/bedrock_example.rs"
[[example]]
name = "bedrock_tool_calling_example"
path = "examples/bedrock_tool_calling_example.rs"
[[example]]
name = "chain_audio_text_example"
path = "examples/chain_audio_text_example.rs"
[[example]]
name = "chain_example"
path = "examples/chain_example.rs"
[[example]]
name = "chain_logging_example"
path = "examples/chain_logging_example.rs"
[[example]]
name = "cohere_example"
path = "examples/cohere_example.rs"
[[example]]
name = "deepclaude_pipeline_example"
path = "examples/deepclaude_pipeline_example.rs"
[[example]]
name = "deepseek_example"
path = "examples/deepseek_example.rs"
[[example]]
name = "elevenlabs_stt_example"
path = "examples/elevenlabs_stt_example.rs"
[[example]]
name = "elevenlabs_tts_example"
path = "examples/elevenlabs_tts_example.rs"
[[example]]
name = "embedding_example"
path = "examples/embedding_example.rs"
[[example]]
name = "evaluation_example"
path = "examples/evaluation_example.rs"
[[example]]
name = "evaluator_parallel_example"
path = "examples/evaluator_parallel_example.rs"
[[example]]
name = "google_embedding_example"
path = "examples/google_embedding_example.rs"
[[example]]
name = "google_example"
path = "examples/google_example.rs"
[[example]]
name = "google_image"
path = "examples/google_image.rs"
[[example]]
name = "google_pdf"
path = "examples/google_pdf.rs"
[[example]]
name = "google_streaming_example"
path = "examples/google_streaming_example.rs"
[[example]]
name = "google_structured_output_example"
path = "examples/google_structured_output_example.rs"
[[example]]
name = "google_tool_calling_example"
path = "examples/google_tool_calling_example.rs"
[[example]]
name = "groq_example"
path = "examples/groq_example.rs"
[[example]]
name = "huggingface_example"
path = "examples/huggingface_example.rs"
[[example]]
name = "json_schema_nested_example"
path = "examples/json_schema_nested_example.rs"
[[example]]
name = "memory_example"
path = "examples/memory_example.rs"
[[example]]
name = "memory_share_example"
path = "examples/memory_share_example.rs"
[[example]]
name = "mistral_example"
path = "examples/mistral_example.rs"
[[example]]
name = "model_listing_example"
path = "examples/model_listing_example.rs"
[[example]]
name = "multi_backend_example"
path = "examples/multi_backend_example.rs"
[[example]]
name = "multi_backend_structured_output_example"
path = "examples/multi_backend_structured_output_example.rs"
[[example]]
name = "ollama_example"
path = "examples/ollama_example.rs"
[[example]]
name = "ollama_image"
path = "examples/ollama_image.rs"
[[example]]
name = "ollama_structured_output_example"
path = "examples/ollama_structured_output_example.rs"
[[example]]
name = "openai_example"
path = "examples/openai_example.rs"
[[example]]
name = "openai_reasoning_example"
path = "examples/openai_reasoning_example.rs"
[[example]]
name = "openai_streaming_example"
path = "examples/openai_streaming_example.rs"
[[example]]
name = "openai_structured_output_example"
path = "examples/openai_structured_output_example.rs"
[[example]]
name = "openai_stt_example"
path = "examples/openai_stt_example.rs"
[[example]]
name = "openai_tts_example"
path = "examples/openai_tts_example.rs"
[[example]]
name = "openai_vision_example"
path = "examples/openai_vision_example.rs"
[[example]]
name = "openai_web_search_example"
path = "examples/openai_web_search_example.rs"
[[example]]
name = "phind_example"
path = "examples/phind_example.rs"
[[example]]
name = "resilient_example"
path = "examples/resilient_example.rs"
[[example]]
name = "tool_calling_example"
path = "examples/tool_calling_example.rs"
[[example]]
name = "tool_json_schema_cycle_example"
path = "examples/tool_json_schema_cycle_example.rs"
[[example]]
name = "trim_strategy_example"
path = "examples/trim_strategy_example.rs"
[[example]]
name = "tts_rodio_example"
path = "examples/tts_rodio_example.rs"
[[example]]
name = "unified_tool_calling_example"
path = "examples/unified_tool_calling_example.rs"
[[example]]
name = "validator_example"
path = "examples/validator_example.rs"
[[example]]
name = "xai_example"
path = "examples/xai_example.rs"
[[example]]
name = "xai_search_chain_tts_example"
path = "examples/xai_search_chain_tts_example.rs"
[[example]]
name = "xai_search_example"
path = "examples/xai_search_example.rs"
[[example]]
name = "xai_streaming_example"
path = "examples/xai_streaming_example.rs"
[[example]]
name = "xai_structured_output_example"
path = "examples/xai_structured_output_example.rs"
[[test]]
name = "test"
path = "tests/test.rs"
[[test]]
name = "test_backends"
path = "tests/test_backends.rs"
[dependencies.anyhow]
version = "1.0"
optional = true
[dependencies.arboard]
version = "3.4.1"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.awc]
version = "3.7.0"
features = ["rustls-0_23-native-roots"]
optional = true
[dependencies.aws-config]
version = "1.7.15"
optional = true
[dependencies.aws-credential-types]
version = "1.2.14"
optional = true
[dependencies.aws-sdk-bedrockruntime]
version = "1.129.0"
optional = true
[dependencies.aws-smithy-types]
version = "1.4.7"
optional = true
[dependencies.axum]
version = "0.7"
features = ["json"]
optional = true
[dependencies.base64]
version = "0.22.1"
[dependencies.bytes]
version = "1.9"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
default-features = false
[dependencies.clap]
version = "4"
features = ["derive"]
optional = true
[dependencies.cpal]
version = "0.15"
optional = true
[dependencies.crossterm]
version = "0.28"
optional = true
[dependencies.dirs]
version = "6.0.0"
[dependencies.either]
version = "1.15.0"
features = ["serde"]
[dependencies.env_logger]
version = "0.11"
optional = true
[dependencies.flexi_logger]
version = "0.29"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.fuzzy-matcher]
version = "0.3"
optional = true
[dependencies.hound]
version = "3.5"
optional = true
[dependencies.log]
version = "0.4"
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.pest]
version = "2.7"
optional = true
[dependencies.pest_derive]
version = "2.7"
optional = true
[dependencies.portable-pty]
version = "0.8"
optional = true
[dependencies.pulldown-cmark]
version = "0.12"
optional = true
[dependencies.rand]
version = "0.8"
[dependencies.ratatui]
version = "0.28"
optional = true
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12.12"
features = [
"json",
"multipart",
"stream",
]
default-features = false
[dependencies.rodio]
version = "0.20.0"
features = [
"mp3",
"wav",
]
optional = true
[dependencies.secrecy]
version = "0.8"
features = ["serde"]
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_bytes]
version = "0.11.19"
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.shell-words]
version = "1.1"
optional = true
[dependencies.syntect]
version = "5.2"
features = ["default-fancy"]
optional = true
default-features = false
[dependencies.textwrap]
version = "0.16"
optional = true
[dependencies.thiserror]
version = "1.0"
[dependencies.tokio]
version = "1.0"
features = ["full"]
[dependencies.tokio-util]
version = "0.7"
optional = true
[dependencies.toml]
version = "0.8"
[dependencies.tower-http]
version = "0.5"
features = ["cors"]
optional = true
[dependencies.unicode-segmentation]
version = "1.11"
optional = true
[dependencies.unicode-width]
version = "0.1"
optional = true
[dependencies.uuid]
version = "1.0"
features = [
"v4",
"serde",
]
optional = true
[dev-dependencies.http]
version = "1.2"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.hyper]
version = "1.5"
[dev-dependencies.insta]
version = "1.39"
[dev-dependencies.mockito]
version = "1.5"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.rodio]
version = "0.20.1"
features = ["symphonia-all"]
default-features = false
[dev-dependencies.rstest]
version = "0.26"
[dev-dependencies.tempfile]
version = "3.10"
[dev-dependencies.tokio]
version = "1.0"
features = [
"macros",
"rt-multi-thread",
]
[dev-dependencies.tokio-test]
version = "0.4"