Current section
Files
Jump to
Current section
Files
mix.exs
defmodule LLM.MixProject do
use Mix.Project
@version "0.1.2"
@source_url "https://github.com/sukacipta/llm-elixir"
def project do
[
app: :llm,
version: @version,
elixir: "~> 1.16",
start_permanent: Mix.env() == :prod,
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
test_coverage: [
summary: [threshold: 90],
ignore_modules: [
LLM.TestSupport.MockHelper,
LLM.TestSupport.TestTool,
LLM.HTTPClient.Req
]
],
name: "LLM",
description: "Lightweight Elixir client for LLM APIs",
source_url: @source_url,
docs: docs(),
package: package()
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:req, "~> 0.5"},
{:telemetry, "~> 1.0", optional: true},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:mox, "~> 1.0", only: :test}
]
end
defp docs do
[
main: "LLM",
source_ref: "v#{@version}",
extra_section: "GUIDES",
extras: extras(),
groups_for_extras: groups_for_extras(),
groups_for_modules: [
Core: [
LLM,
LLM.Context,
LLM.Message,
LLM.Response,
LLM.Tool,
LLM.Usage,
LLM.Adapter,
LLM.HTTPClient,
LLM.HTTPClient.Req
],
Providers: [
LLM.Provider.OpenAI,
LLM.Provider.OpenAIResponse,
LLM.Provider.Anthropic,
LLM.Provider.Gemini,
LLM.Provider.OpenRouter,
LLM.Provider,
LLM.Provider.Resolver
],
Adapters: [
LLM.Adapter.OpenAI,
LLM.Adapter.OpenAIResponse,
LLM.Adapter.Anthropic,
LLM.Adapter.Gemini
],
Streaming: [
LLM.Stream,
LLM.Stream.Chunk,
LLM.Stream.Thinking,
LLM.Stream.ToolCall,
LLM.Stream.Stop,
LLM.Stream.Error
]
]
]
end
defp extras do
[
"README.md",
"guides/overview.md",
"guides/getting_started.md",
"guides/messages.md",
"guides/providers.md",
"guides/streaming.md",
"guides/tools.md",
"guides/configuration.md"
]
end
defp groups_for_extras do
[
Introduction: ~r"guides/(overview|getting_started)\.md",
Guides: ~r"guides/[a-z_]+\.md"
]
end
defp package do
[
licenses: ["MIT"],
links: %{"GitHub" => @source_url}
]
end
end