LLM helpers for SRX services: ChatOpenAI wrapper, tool base and Tavily tool
Project description
srx-lib-llm
LLM helpers for SRX services built on LangChain.
What it includes:
responses_chat(prompt, cache=False): simple text chat via OpenAI Responses API- Tool strategy base and registry
- Tavily search tool strategy
- Structured output helpers: build Pydantic model from JSON Schema and generate structured outputs via LLM
- Request models, e.g.
DynamicStructuredOutputRequest
Designed to work with official OpenAI only.
Install
PyPI (public):
pip install srx-lib-llm
uv (pyproject):
[project]
dependencies = ["srx-lib-llm>=0.1.0"]
Usage
from srx_lib_llm import responses_chat
text = await responses_chat("Hello there", cache=True)
Structured output from JSON Schema:
from srx_lib_llm import StructuredOutputGenerator, build_model_from_schema, preprocess_json_schema
json_schema = {
"type": "object",
"properties": {
"title": {"type": "string"},
"score": {"type": "number"}
},
"required": ["title"]
}
gen = StructuredOutputGenerator()
model = build_model_from_schema("MyOutput", preprocess_json_schema(json_schema))
result = await gen.generate_from_model("Give me a title and score", model)
print(result.model_dump())
All-in-one extraction:
from srx_lib_llm import extract_structured
result = await extract_structured(
text="Analyze this text...", json_schema=my_schema, schema_name="MyOutput"
)
print(result.model_dump())
Back-compat helpers and request models:
from srx_lib_llm import create_dynamic_schema, DynamicStructuredOutputRequest
schema_model = create_dynamic_schema("MyOutput", json_schema)
payload = DynamicStructuredOutputRequest(text="...", json_schema=json_schema)
Tools:
from srx_lib_llm.tools import ToolStrategyBase, register_strategy, get_strategies
from srx_lib_llm.tools.tavily import TavilyToolStrategy
register_strategy(TavilyToolStrategy())
strategies = get_strategies()
Environment Variables
OPENAI_API_KEY(required)OPENAI_MODEL(optional, default:gpt-4.1-nano)TAVILY_API_KEY(optional, for the Tavily tool)
Release
Tag vX.Y.Z to publish to GitHub Packages via Actions.
License
Proprietary © SRX
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file srx_lib_llm-0.1.9.tar.gz.
File metadata
- Download URL: srx_lib_llm-0.1.9.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6693bd5fccdcc64aaab8cac879a50b6ad6d2f62baf2f10200cd6d1a84411f62
|
|
| MD5 |
d7bb7988dd981ee1e19aa1d84e100faf
|
|
| BLAKE2b-256 |
6b107cd478912c8c1e24c9b449aec75ba3422d57bd56e8184ad82dbfa0f92e1b
|
File details
Details for the file srx_lib_llm-0.1.9-py3-none-any.whl.
File metadata
- Download URL: srx_lib_llm-0.1.9-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6da4e5fed385b505c6e141fff46d607ae3b494e3457a738fde1eec99cd97a23a
|
|
| MD5 |
4e0daf9befb06b3c50a8154a50d4ea11
|
|
| BLAKE2b-256 |
8c859b2ef6a3dfc5048b653077fe8cb3e56e4a737b4831f484295779186341fb
|