BaseLLM API Reference¶
- class lmitf.base_llm.BaseLLM(api_key: str | None = None, base_url: str | None = None)[source]¶
Bases:
object
OpenAI LLM 客户端封装类
提供对 OpenAI Chat Completions API 的简化访问接口,支持文本和 JSON 格式响应。 自动处理环境变量配置,维护调用历史记录。
- client¶
OpenAI 客户端实例
- Type:
OpenAI
- call(messages: str | list[dict[str, str]], model: str = 'gpt-4o', response_format: str = 'text', temperature: float | None = None, top_p: float | None = None, frequency_penalty: float | None = None, presence_penalty: float | None = None, seed: int | None = None, max_tokens: int | None = None, stop: list[str] | None = None) str | dict[str, Any] [source]¶
调用 OpenAI Chat Completions API
- Parameters:
model (str) – 要使用的模型名称,例如 ‘gpt-4’, ‘gpt-3.5-turbo’
messages (str or List[Dict[str, str]]) – 消息列表或单个消息字符串。如果是字符串,将自动转换为用户消息
response_format ({'text', 'json'}, default 'text') – 响应格式。’text’ 返回纯文本,’json’ 返回结构化JSON
temperature (float, optional) – 控制输出随机性的温度参数,范围 0-2。值越高输出越随机
top_p (float, optional) – 核采样参数,范围 0-1。与 temperature 一起控制输出多样性
frequency_penalty (float, optional) – 频率惩罚参数,范围 -2 到 2。正值减少重复内容
presence_penalty (float, optional) – 存在惩罚参数,范围 -2 到 2。正值鼓励谈论新主题
seed (int, optional) – 随机种子,用于获得可重现的输出
max_tokens (int, optional) – 生成的最大令牌数
stop (List[str], optional) – 停止序列列表,遇到这些序列时停止生成
- Returns:
API 响应内容。如果 response_format=’text’ 返回字符串, 如果 response_format=’json’ 返回解析后的字典
- Return type:
- Raises:
ValueError – 当 response_format 不是 ‘text’ 或 ‘json’ 时, 或当请求 JSON 格式但消息中不包含 JSON 指令时
json.JSONDecodeError – 当 JSON 响应无法解析时
- lmitf.base_llm.extract_json(text: str) dict[str, Any] [source]¶
从字符串中提取第一个 JSON 对象并解析为 Python 字典
支持以下格式: 1.
`json ... `
代码块格式 2. 直接的 { … } JSON 对象格式- Parameters:
text (str) – 包含 JSON 的文本字符串
- Returns:
解析后的 JSON 字典
- Return type:
Dict[str, Any]
- Raises:
json.JSONDecodeError – 当无法找到或解析有效的 JSON 对象时
Examples
>>> text = '```json\n{"name": "test", "value": 123}\n```' >>> result = extract_json(text) >>> print(result) {'name': 'test', 'value': 123}
>>> text = 'Some text {"key": "value"} more text' >>> result = extract_json(text) >>> print(result) {'key': 'value'}
Overview¶
The BaseLLM
class provides a simplified interface for interacting with OpenAI’s Chat Completions API. It handles authentication, request formatting, and response processing automatically.
Class Reference¶
BaseLLM¶
- class lmitf.base_llm.BaseLLM(api_key: str | None = None, base_url: str | None = None)[source]¶
Bases:
object
OpenAI LLM 客户端封装类
提供对 OpenAI Chat Completions API 的简化访问接口,支持文本和 JSON 格式响应。 自动处理环境变量配置,维护调用历史记录。
- client¶
OpenAI 客户端实例
- Type:
OpenAI
- call(messages: str | list[dict[str, str]], model: str = 'gpt-4o', response_format: str = 'text', temperature: float | None = None, top_p: float | None = None, frequency_penalty: float | None = None, presence_penalty: float | None = None, seed: int | None = None, max_tokens: int | None = None, stop: list[str] | None = None) str | dict[str, Any] [source]¶
调用 OpenAI Chat Completions API
- Parameters:
model (str) – 要使用的模型名称,例如 ‘gpt-4’, ‘gpt-3.5-turbo’
messages (str or List[Dict[str, str]]) – 消息列表或单个消息字符串。如果是字符串,将自动转换为用户消息
response_format ({'text', 'json'}, default 'text') – 响应格式。’text’ 返回纯文本,’json’ 返回结构化JSON
temperature (float, optional) – 控制输出随机性的温度参数,范围 0-2。值越高输出越随机
top_p (float, optional) – 核采样参数,范围 0-1。与 temperature 一起控制输出多样性
frequency_penalty (float, optional) – 频率惩罚参数,范围 -2 到 2。正值减少重复内容
presence_penalty (float, optional) – 存在惩罚参数,范围 -2 到 2。正值鼓励谈论新主题
seed (int, optional) – 随机种子,用于获得可重现的输出
max_tokens (int, optional) – 生成的最大令牌数
stop (List[str], optional) – 停止序列列表,遇到这些序列时停止生成
- Returns:
API 响应内容。如果 response_format=’text’ 返回字符串, 如果 response_format=’json’ 返回解析后的字典
- Return type:
- Raises:
ValueError – 当 response_format 不是 ‘text’ 或 ‘json’ 时, 或当请求 JSON 格式但消息中不包含 JSON 指令时
json.JSONDecodeError – 当 JSON 响应无法解析时
Key Features¶
Automatic Configuration: Uses environment variables for API key and base URL
Flexible Input: Accepts both string messages and structured conversation arrays
JSON Mode: Built-in support for structured JSON responses
History Tracking: Maintains a history of all API calls
Streaming Support: Real-time response streaming
Error Handling: Comprehensive error handling and logging
Usage Examples¶
Basic Text Generation¶
from lmitf import BaseLLM
llm = BaseLLM()
response = llm.call("What is machine learning?")
print(response)
JSON Mode¶
# Get structured output
profile = llm.call_json(
"Generate a user profile with name, age, and occupation",
model="gpt-4"
)
print(profile) # Returns a dictionary
Conversation with Context¶
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What's the capital of France?"},
{"role": "assistant", "content": "The capital of France is Paris."},
{"role": "user", "content": "What's its population?"}
]
response = llm.call(messages, model="gpt-4")
print(response)
Streaming Responses¶
# Stream responses for real-time output
response_stream = llm.call(
"Write a short story about AI",
model="gpt-4",
stream=True
)
for chunk in response_stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Configuration¶
Environment Variables¶
The BaseLLM
class automatically reads configuration from environment variables:
export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="https://api.openai.com/v1"
Manual Configuration¶
You can also provide credentials directly:
llm = BaseLLM(
api_key="your-api-key",
base_url="https://your-custom-endpoint.com/v1"
)
Method Reference¶
call()¶
Main method for generating text responses.
Parameters:
messages
(str | list): Input message(s)model
(str): Model to use (default: “gpt-4o”)stream
(bool): Enable streaming responses**kwargs
: Additional OpenAI API parameters
Returns:
str
: Generated response text (non-streaming)Iterator
: Streaming response chunks (streaming)
call_json()¶
Generate structured JSON responses.
Parameters:
messages
(str | list): Input message(s)model
(str): Model to use (default: “gpt-4o”)**kwargs
: Additional OpenAI API parameters
Returns:
dict
: Parsed JSON response
Error Handling¶
The class includes comprehensive error handling:
try:
response = llm.call("Hello", model="invalid-model")
except Exception as e:
print(f"API Error: {e}")
Best Practices¶
Use Environment Variables: Store API credentials in
.env
filesHandle Errors: Always wrap API calls in try-catch blocks
Monitor Usage: Check
call_history
to track API usageChoose Appropriate Models: Use different models based on task complexity
Use JSON Mode: For structured data extraction tasks