Skip to main content

tool-calling

Use when defining functions/tools for an LLM to call through liter-llm, or requesting structured JSON outputs. Covers tool schemas, tool_calls handling, and response formats.

Source facts

Repository
xberg-io/liter-llm
Last source activity
September 30, 2026 at 16:23
Detected SKILL.md language
English
Stars
260
Forks
23

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
tool-calling
description
Use when defining functions/tools for an LLM to call through liter-llm, or requesting structured JSON outputs. Covers tool schemas, tool_calls handling, and response formats.
<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:636c5d6448b2e3c003bd5caec347391513d72e415ceaef0740241141bc363b35 Source-Hash: blake3:651c31e789b5b3a98bbebecbda0ea4f0b6222b63c8264db7c677af355c5fe27b Schema-Version: v1 --> # Tool Calling Pass a `tools` array of function definitions; the model may respond with `tool_calls` instead of (or alongside) text. Execute the named function and feed the result back as a `tool` message. ## Python ```python import asyncio, json, os from liter_llm import create_client from liter_llm._internal_bindings import ChatCompletionRequest payload = { "model": "openai/gpt-4o", "messages": [{"role": "user", "content": "What is the weather in Berlin?"}], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a location", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "City name"}, }, "required": ["location"], }, }, } ], "tool_choice": "auto", } async def main() -> None: client = create_client(api_key=os.environ["OPENAI_API_KEY"]) request = ChatCompletionRequest.from_json(json.dumps(payload)) response = await client.chat(request) for call in response.choices[0].message.tool_calls or []: print(call.function.name, call.function.arguments) # arguments is a JSON string asyncio.run(main()) ``` ## Structured outputs Request strict JSON with `response_format`: ```python request = ChatCompletionRequest.from_json(json.dumps({ "model": "openai/gpt-4o", "messages": [{"role": "user", "content": "Extract name and age as JSON."}], "response_format": {"type": "json_object"}, })) response = await client.chat(request) ``` ## Notes - `function.arguments` is a JSON **string** — parse it before use. - Append each tool result as a message with `role="tool"` and the matching `tool_call_id`, then call `chat` again to let the model continue. - Tool support and JSON-mode availability vary by provider; check the provider reference if a model ignores `tools`.
View on GitHub