Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,21 @@ jobs:
# grimoire (the control plane) is also GitHub-only.
pip install "grimoire @ git+https://github.com/araray/grimoire.git@v0.4.0"
# dev pulls in test (pytest, pytest-asyncio, respx, ...) and sandbox
# deps; the extras below are [all] minus [zai]: provider SDKs
# (openai, anthropic, ...), chromadb, and the bridge deps
# (grpcio/protobuf/starlette) that unit tests import at collection
# or fixture time. zai-sdk is deliberately NOT installed: the zai
# unit tests mock the openai/httpx fallback transport, and the SDK
# transport would bypass those mocks and hit the live API.
# numpy is used by embedding-shaped unit tests.
pip install -e ".[dev,bridge,openai,anthropic,gemini,ollama,deepinfra,deepgram,typesafe,brightdata,serper,serpapi,semanticscholar,postgres,chromadb]"
# deps; [all] pulls every provider/search/storage extra plus the
# bridge deps (grpcio/protobuf/starlette) that unit tests import at
# collection or fixture time. Installing [all] rather than a
# hand-maintained subset means a new extra is exercised in CI the
# moment it is added to pyproject.
#
# Optional vendor SDKs (zai-sdk, friendli, ...) are installed on
# purpose: every provider test pins its `backend` explicitly, so the
# presence of a vendor SDK can no longer bypass the mocks and reach a
# live API. See docs/PROVIDER_MODERNIZATION_PLAN.md §9.
#
# NOTE: openai>=3 and anthropic>=1 are built on httpx2 and no longer
# install httpx/certifi transitively; the provider extras declare
# httpx explicitly where llmcore's own clients need it.
pip install -e ".[dev,all]"
pip install numpy

- name: Version drift guard
Expand Down
313 changes: 313 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

| Category | Features |
|----------|----------|
| **🔌 Multi-Provider Support** | OpenAI, Anthropic, Google Gemini, Ollama, DeepSeek, Z.ai (GLM), Mistral, Qwen, xAI, vLLM, DeepInfra, Deepgram, TypeSafe.ai (System One typed judgments) |
| **🔌 Multi-Provider Support** | OpenAI, Anthropic, Google Gemini, Ollama, DeepSeek, Z.ai (GLM), FriendliAI, Mistral, Qwen, xAI, vLLM, DeepInfra, Deepgram, TypeSafe.ai (System One typed judgments) |
| **💬 Chat Interface** | Unified `chat()` API, streaming responses, tool/function calling, per-call usage via `chat_with_usage()` |
| **📦 Session Management** | Persistent conversations, SQLite/PostgreSQL backends, transient sessions |
| **🔍 RAG System** | ChromaDB/pgvector storage, semantic search, context injection |
Expand Down Expand Up @@ -178,6 +178,9 @@ pip install llmcore[deepgram]
# Z.ai (GLM) support
pip install llmcore[zai]

# FriendliAI support (Model APIs, Dedicated Endpoints, Container)
pip install llmcore[friendli]

# TypeSafe.ai System One typed judgments (noul/choice/score; httpx only)
pip install llmcore[typesafe]

Expand Down Expand Up @@ -331,6 +334,15 @@ thinking = "enabled" # "enabled" | "disabled"
reasoning_effort = "high" # none|minimal|low|medium|high|xhigh|max
timeout = 300

[providers.friendli]
# FriendliAI. API key via FRIENDLI_TOKEN (FRIENDLIAI_API_KEY also accepted).
# endpoint_type = "serverless" # "serverless" | "dedicated" | "container"
# backend = "openai" # "openai" (default) | "httpx" | "sdk"
default_model = "zai-org/GLM-5.3"
parse_reasoning = true # split reasoning into reasoning_content
# reasoning_effort = "high" # minimal|low|medium|high|xhigh|max|ultracode
timeout = 300

[providers.typesafe]
# TypeSafe.ai System One (typed judgments, NOT chat). API key via TYPESAFE_API_KEY.
# Use provider.system_one(state, questions) or llm.chat(..., provider_name="typesafe", questions={...}).
Expand Down Expand Up @@ -403,6 +415,7 @@ LLMCore supports multiple LLM providers through a unified interface:
| **Ollama** | Llama 3.2/3.3, Gemma 3, Phi-3, Mistral | Streaming, Local |
| **DeepSeek** | DeepSeek-R1, DeepSeek-V3.2, DeepSeek-Chat | Streaming, Reasoning |
| **Z.ai (GLM)** | GLM-5.2, GLM-5.1, GLM-4.7, GLM-4.6V, CogView, CogVideoX, GLM-TTS/ASR/OCR, Embedding-3 | Streaming, Tools, Reasoning, Vision, Embeddings, Image, Video, TTS, STT, OCR, Web Search |
| **FriendliAI** | Model APIs catalog (GLM-5.3/5.3-Flash/5.2/5.1, DeepSeek-V3.2, Gemma 4 31B, MiniMax-M2.5) + your own Dedicated Endpoints / Container | Streaming, Tools, Reasoning (effort/budget/parse), Vision, Structured output incl. regex, Exact tokenizer, Embeddings & Images (dedicated), STT |
| **Mistral** | Mistral Large 3 | Streaming, Tools |
| **Qwen** | Qwen 3 Max, Qwen3-Coder-480B | Streaming, Tools |
| **xAI** | Grok-4, Grok-4-Heavy | Streaming, Tools |
Expand Down Expand Up @@ -804,6 +817,7 @@ Built-in model cards for:
- **Ollama**: Llama 3.2/3.3, Gemma 3, Phi-3, Mistral, CodeLlama
- **DeepSeek**: DeepSeek-R1, DeepSeek-V3.2
- **Z.ai (GLM)**: GLM-5.2, GLM-5.1, GLM-4.7, GLM-4.6V (vision), Embedding-3
- **FriendliAI**: GLM-5.3, GLM-5.3-Flash, GLM-5.2, GLM-5.1, DeepSeek-V3.2, Gemma 4 31B, MiniMax-M2.5 (context, pricing, and reasoning options generated live from the Friendli catalog)
- **Mistral**: Mistral Large 3
- **Qwen**: Qwen 3 Max, Qwen3-Coder
- **xAI**: Grok-4, Grok-4-Heavy
Expand Down Expand Up @@ -1062,6 +1076,11 @@ from llmcore import (
- [Search providers usage](docs/Search_providers_usage.md)
- [Search providers rationale](docs/Search_providers_rationale.md)
- [Deepgram provider usage](docs/Deepgram_provider_usage.md)
- [FriendliAI provider usage](docs/Friendli_provider_usage.md)
- [Provider support matrix](docs/PROVIDER_SUPPORT_MATRIX.md) — SDK/API versions we track per provider, plus the capability matrix
- [Provider modernization plan](docs/PROVIDER_MODERNIZATION_PLAN.md) — phased plan to close the gaps in that matrix
- [Media subsystem spec](docs/MEDIA_SUBSYSTEM_SPEC.md) — design for first-class image/audio/video generation
- [Remote runtime spec](docs/COLAB_RUNTIME_SPEC.md) — design for serving models on remote GPUs (Colab first)
- [TypeSafe.ai provider usage](docs/TypeSafe_provider_usage.md)
- [`chat_with_usage` guide](docs/USAGE_chat_with_usage.md)
- [Model cards](docs/model_cards.md)
Expand Down
Loading
Loading