Fashionable agentic functions hardly ever discuss to a single mannequin or a single software, 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 functions. Kosong unifies message constructions, asynchronous software orchestration and pluggable chat suppliers so groups can construct brokers with out arduous wiring enterprise logic to a single API. Additionally it is the layer that powers Moonshot’s Kimi CLI.
What Kosong offers?
Kosong is a Python library that sits between your agent logic and LLM suppliers. It as an LLM abstraction layer for contemporary agent functions and exhibits instance code that makes use of a Kimi chat supplier along with excessive degree helper features generate and step.
The general public API floor is deliberately stored small. On the high degree you import kosong.generate, kosong.step and the end result 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 task, reminiscent of "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 assist richer multimodal payloads whereas maintaining the essential chat instance easy for brand spanking new customers.
Kosong additionally exposes a streaming unit StreamedMessagePart by way of kosong.chat_provider. Supplier implementations emit these components throughout technology, and the library merges them into the ultimate Message. The non-compulsory TokenUsage construction tracks token counts in a supplier unbiased method, which is then hooked up to the end result objects for logging and monitoring.
Tooling, Toolset and SimpleToolset
Most agent stacks want instruments reminiscent of search, code execution or database calls. Kosong fashions this by means of the tooling module. The instance within the GitHub repo defines a software 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 accountable for resolving software calls from the mannequin and routing them to the right async operate, whereas step manages the orchestration round a single conversational flip.
generate for single shot completion
The generate operate is the entry level for plain chat completion. You present the chat_provider, a system_prompt, an specific checklist of instruments, which may 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 by means of an on_message_part callback. Within the GitHub repo, the analysis workforce illustrates this by defining a easy output operate that prints every StreamedMessagePart. After streaming is full, generate returns a GenerateResult that comprises the merged assistant message and an non-compulsory utilization construction with token counts. This sample lets functions each show incremental output and nonetheless work with a clear closing message object.
step for software utilizing brokers
For software utilizing brokers, Kosong exposes the step operate. The instance within the Git Repo exhibits kosong.step being known as with a Kimi supplier, a SimpleToolset that comprises AddTool, a system immediate and consumer historical past that instructs the mannequin to name the add software.
step returns a StepResult. The instance prints end result.message after which awaits end result.tool_results(). This methodology collects all software outputs produced through the step and returns them to the caller. The orchestration of software calls, together with argument parsing into the Pydantic parameter mannequin and conversion into ToolReturnType outcomes, is dealt with inside Kosong so agent authors shouldn’t have to implement their very own dispatch loop for every supplier.
Inbuilt 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 software orchestration and pluggable chat suppliers for agent functions.
- The library exposes a small core API,
generatefor plain chat andstepfor software utilizing brokers, backed by abstractions reminiscent ofChatProvider,Message,Device,ToolsetandSimpleToolset. - Kosong at the moment ships a
Kimichat supplier focusing on the Moonshot AI API, and defines theChatProviderinterface so groups can plug in further 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 software 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 seems to be like a realistic transfer from Moonshot AI, it cleanly separates agent logic from LLM and power backends whereas maintaining the floor space small for early builders. By centering all the pieces on ChatProvider, Message and Toolset, it provides Kimi CLI and different stacks a constant strategy to evolve fashions and tooling with out rewriting orchestration. For groups constructing long run agent programs, Kosong could possibly be the proper of minimal infrastructure.
Try the Repo and Docs. Be happy to take a look at our GitHub Page for Tutorials, Codes and Notebooks. Additionally, be happy to observe us on Twitter and don’t neglect 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 Knowledge Science from the College of Padova. With a strong basis in statistical evaluation, machine studying, and information engineering, Michal excels at remodeling advanced datasets into actionable insights.
