Trendy agentic purposes not often discuss to a single mannequin or a single instrument, so how do you retain that stack maintainable when suppliers, fashions and instruments hold altering each few weeks. Moonshot AI’s Kosong targets this drawback as an LLM abstraction layer for agent purposes. Kosong unifies message constructions, asynchronous instrument orchestration and pluggable chat suppliers so groups can construct brokers with out exhausting wiring enterprise logic to a single API. It is usually the layer that powers Moonshot’s Kimi CLI.
What Kosong gives?
Kosong is a Python library that sits between your agent logic and LLM suppliers. It as an LLM abstraction layer for contemporary agent purposes and exhibits instance code that makes use of a Kimi chat supplier along with excessive stage helper capabilities generate and step.
The general public API floor is deliberately stored small. On the high stage you import kosong.generate, kosong.step and the consequence sorts GenerateResult and StepResult. Supporting modules outline chat_provider, message, tooling, and tooling.easy. These modules wrap supplier particular streaming codecs, token accounting and power calls behind one constant interface.
ChatProvider and message mannequin
The core integration level is the ChatProvider abstraction. Moonshot workforce exhibits a supplier implementation for Kimi in kosong.chat_provider.kimi. A Kimi object is initialized with base_url, api_key and the mannequin title, for instance kimi-k2-turbo-preview. This supplier is then handed into kosong.generate or kosong.step along with a system immediate, instruments and a message historical past.
Messages are represented by the Message class from kosong.message. Within the examples, a message is constructed with a job, akin to "consumer", and a content material argument. The kind of content material is documented as both a string or a listing of content material components, which lets the library help richer multimodal payloads whereas holding the essential chat instance easy for brand new customers.
Kosong additionally exposes a streaming unit StreamedMessagePart by way of kosong.chat_provider. Supplier implementations emit these components throughout era, and the library merges them into the ultimate Message. The optionally available TokenUsage construction tracks token counts in a supplier unbiased method, which is then hooked up to the consequence objects for logging and monitoring.
Tooling, Toolset and SimpleToolset
Most agent stacks want instruments akin to search, code execution or database calls. Kosong fashions this via the tooling module. The instance within the GitHub repo defines a instrument by subclassing CallableTool2 with a Pydantic parameter mannequin. The instance AddTool units title, description and params, and implements __call__ to return a ToolOk worth which is a legitimate ToolReturnType.
Instruments are registered in a SimpleToolset from kosong.tooling.easy. Within the instance, a SimpleToolset is instantiated after which augmented with the AddTool occasion utilizing the += operator. This toolset is handed into kosong.step, not into generate. The toolset is liable for resolving instrument calls from the mannequin and routing them to the proper async perform, whereas step manages the orchestration round a single conversational flip.
generate for single shot completion
The generate perform is the entry level for plain chat completion. You present the chat_provider, a system_prompt, an specific checklist of instruments, which might be empty, and a historical past of Message objects. The Kimi instance exhibits a minimal utilization sample the place a single consumer message is handed as historical past and instruments=[].
generate helps streaming via an on_message_part callback. Within the GitHub repo, the analysis workforce illustrates this by defining a easy output perform that prints every StreamedMessagePart. After streaming is full, generate returns a GenerateResult that accommodates the merged assistant message and an optionally available utilization construction with token counts. This sample lets purposes each show incremental output and nonetheless work with a clear last message object.
step for instrument utilizing brokers
For instrument utilizing brokers, Kosong exposes the step perform. The instance within the Git Repo exhibits kosong.step being known as with a Kimi supplier, a SimpleToolset that accommodates AddTool, a system immediate and consumer historical past that instructs the mannequin to name the add instrument.
step returns a StepResult. The instance prints consequence.message after which awaits consequence.tool_results(). This technique collects all instrument outputs produced throughout the step and returns them to the caller. The orchestration of instrument calls, together with argument parsing into the Pydantic parameter mannequin and conversion into ToolReturnType outcomes, is dealt with inside Kosong so agent authors should not have to implement their very own dispatch loop for every supplier.
In-built demo and relationship with Kimi CLI
Kosong ships with a inbuilt demo agent that may be run domestically. The Git README paperwork surroundings variables KIMI_BASE_URL and KIMI_API_KEY, and exhibits a launch command utilizing uv run python -m kosong kimi --with-bash. This demo makes use of Kimi because the chat supplier and exposes a terminal agent that may name instruments, together with shell instructions when the choice with bash is enabled.
Key Takeaways
- Kosong is an LLM abstraction layer from Moonshot AI that unifies message constructions, asynchronous instrument orchestration and pluggable chat suppliers for agent purposes.
- The library exposes a small core API,
generatefor plain chat andstepfor instrument utilizing brokers, backed by abstractions akin toChatProvider,Message,Device,ToolsetandSimpleToolset. - Kosong at present ships a
Kimichat supplier concentrating on the Moonshot AI API, and defines theChatProviderinterface so groups can plug in extra backends with out altering agent logic. - Device definitions use Pydantic parameter fashions and
ToolReturnTypeoutcomes, which lets Kosong deal with argument parsing, validation and orchestration of instrument calls insidestep. - Kosong powers Moonshot’s Kimi CLI, offering the underlying LLM abstraction layer whereas Kimi CLI focuses on the command line agent expertise that may goal Kimi and different backends.
Kosong appears to be like like a realistic transfer from Moonshot AI, it cleanly separates agent logic from LLM and power backends whereas holding the floor space small for early builders. By centering every thing on ChatProvider, Message and Toolset, it provides Kimi CLI and different stacks a constant solution to evolve fashions and tooling with out rewriting orchestration. For groups constructing long run agent techniques, Kosong might be the correct of minimal infrastructure.
Take a look at the Repo and Docs. Be happy to take a look at our GitHub Page for Tutorials, Codes and Notebooks. Additionally, be at liberty to observe us on Twitter and don’t overlook to hitch our 100k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
Michal Sutter is a knowledge science skilled with a Grasp of Science in Information Science from the College of Padova. With a strong basis in statistical evaluation, machine studying, and knowledge engineering, Michal excels at remodeling advanced datasets into actionable insights.

