Metadata-Version: 2.4
Name: tketool.llm
Version: 1.3.4
Summary: OpenAI-compatible LLM, structured prompt, scheduler, and memory APIs for tketool
Author-email: Ke <jiangke1207@icloud.com>
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/tketool.llm/
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: tketool.core==1.3.4
Requires-Dist: tketool.ml==1.3.4
Requires-Dist: openai<4,>=3
Requires-Dist: httpx<1,>=0.27
Requires-Dist: langchain-core<1.7,>=1.6
Requires-Dist: pydantic<3,>=2.10
Provides-Extra: local-embeddings
Requires-Dist: torch<3,>=2.4; extra == "local-embeddings"
Requires-Dist: transformers<6,>=5; extra == "local-embeddings"
Provides-Extra: memory
Requires-Dist: hindsight-all<1,>=0.9; extra == "memory"
Provides-Extra: test
Requires-Dist: pytest<9,>=8; extra == "test"

# tketool.llm

OpenAI-compatible large-model access, structured-output prompts, embeddings,
memory, tools, and the current scheduler.

```bash
pip install tketool.llm
```

## Chat Completions

```python
import os

from tketool.llm import OpenAI_Complete_Model

llm = OpenAI_Complete_Model(
    model_name="gpt-4o-mini",
    apitoken=os.environ["OPENAI_API_KEY"],
    base_url="https://api.openai.com/v1",
    call_dict={"temperature": 0.2},
)

text = llm("用三句话解释向量检索", return_detail=False)
print(text)
```

## Responses API

```python
import os

from tketool.llm import OpenAI_Response_Model

llm = OpenAI_Response_Model(
    model_name="gpt-5-mini",
    apitoken=os.environ["OPENAI_API_KEY"],
    base_url="https://api.openai.com/v1",
    call_dict={"max_output_tokens": 300},
)

text, detail = llm("给出一个最小 RAG 流程", return_detail=True)
print(text)
print(detail)
```

Both transports accept a complete `messages` list and return the same detail
shape. OpenAI-compatible gateways are supported by changing `base_url` and
`model_name`.

```python
messages = [
    {"role": "system", "content": "回答要简洁。"},
    {"role": "user", "content": "什么是结构化输出？"},
]

answer = llm("", return_detail=False, messages=messages)
```

New code should import from `tketool.llm`. The existing `tketool.lmc` path is
kept as a compatibility API during migration.

Local Hugging Face embeddings are optional:

```bash
pip install "tketool.llm[local-embeddings]"
```

The optional `memory` extra requires Python 3.11 or newer because its external
backend does. The legacy `agent`/`context` implementation was removed because
it depended on the retired scheduler; use `scheduler2` for current agent flows.
