Build target libchatllm:
Assume MSVC is used.
-
Build target
libchatllm:cmake --build build --config Release --target libchatllm
-
Copy
libchatllm.dll,libchatllm.libandggml.dlltobindings;
-
Build target
libchatllm:cmake --build build --target libchatllm
main.nim, which highlights code snippets.
Build:
nim c main.nim
Run it with exactly the same command line options, for example: main -i -m path/to/model.
server.nim provides some OpenAI/Ollama/llama.cpp compatible API, and is also a web chat demo.
Command line options:
usage: server [app_args] [---TYPE path/to/model [additional args]]
where app_args :: --ui /path/to/ui --port PORT
where TYPE ::= chat | fim | embWebUI of llama.cpp is also (partly) supported. Use --ui to select the WebUI of llama.cpp.
Run chatllm.py with exactly the same command line options.
For example,
-
Linux:
python3 chatllm.py -i -m path/to/model -
Windows:
python chatllm.py -i -m path/to/model
If OSError: exception: access violation reading 0x0000000000000000 occurred, try:
- Update to latest Python version;
- Install latest Microsoft Visual C++ Redistributable;
- Remove all
msvcp140.*from your Python directory.
There is also a Chatbot powered by Streamlit:
To start it:
streamlit run chatllm_st.py -- -i -m path/to/modelNote: "STOP" function is not implemented yet.
Important
This is going to be re-written by Nim. Only basic functionalities are provided.
Here is a server (default port: 11434) providing some OpenAI/Ollama/llama.cpp Compatible API. Note that most of the parameters are ignored.
openai_api.py supports loading several types models for chatting, code completion (FIM), or text embedding etc.
For example, load to models, one for chatting, one for FIM:
python openai_api.py ---chat path/to/deepseekcoder-1.3b.bin ---fim /path/to/deepseekcoder-1.3b-base.binAdditional arguments for each model can be specified too. For example:
python openai_api.py ---chat path/to/chat/model --top_k 2 ---fim /path/to/fim/model --temp 0.8openai_api.py uses API path to select chatting or completion models: when API path is ending with
/generate, code completion model is selected; when ending with /completions
chatting model is selected.
Some base models that can be used for code completion:
- DeepSeekCoder: Coder-Base-1.3B
- CodeGemma v1.1: Base-2B, Base-7B
- StarCoder2: Base-3B, Base-7B, Base-15B (not recommended)
This module provides sufficient Ollama API so that it can be used to emulate Ollama model provider in Visual Studio Code Copilot. For example, starting the server with a model:
python openai_api.py ---chat :qwen2.5Select the model from Ollama provider:
openai_api.py provides a WebUI. WebUI of llama.cpp is also (partly) supported.
Use --ui to select WebUI llama.cpp:
python openai_api.py --ui /path/to/index.html.gz ---chat :qwen2.5Run chatllm.ts with exactly the same command line options using Bun:
bun run chatllm.ts -i -m path/to/modelWARNING: Bun looks buggy on Linux.
libchatllm can be utilized by all languages that can call into dynamic libraries.
-
Linux
-
Build
bindings\main.c:export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH gcc main.c libchatllm.so
-
Test
a.outwith exactly the same command line options.
-
-
Windows:
-
Build
bindings\main.c:cl main.c libchatllm.lib
-
Test
main.exewith exactly the same command line options.
-
Pascal binding is also available.
Examples:
- main.dpr, which can be built by Delphi or FPC.
- Writing Tools.


