本文面向开发人员提供轻量化大模型工具本地部署实战方案,无需复杂分布式环境,基于Python快速封装通用大模型调用工具,实现文本问答、摘要生成、批量处理核心能力。代码可直接运行,适配本地开源大模型与API在线模型双模式,降低大模型业务落地门槛,适用于企业内部辅助工具、自动化脚本、数据分析场景。
Python 3.9+
pip install requests transformers torch python-dotenvMODEL_API_KEY=sk-xxxxxx
MODEL_BASE_URL=https://xxx/v1
LOCAL_MODEL_PATH=./llm-model
MAX_TOKEN=1024
TEMPERATURE=0.7import os
import requests
from dotenv import load_dotenv
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载环境配置
load_dotenv()
class LLMBaseTool:
def __init__(self, use_local=False):
self.use_local = use_local
self.max_token = int(os.getenv("MAX_TOKEN"))
self.temperature = float(os.getenv("TEMPERATURE"))
if not self.use_local:
self.api_key = os.getenv("MODEL_API_KEY")
self.base_url = os.getenv("MODEL_BASE_URL")
self.headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json"}
else:
model_path = os.getenv("LOCAL_MODEL_PATH")
self.tokenizer = AutoTokenizer.from_pretrained(model_path)
self.model = AutoModelForCausalLM.from_pretrained(model_path)
def api_chat(self, prompt: str) -> str:
payload = {
"messages": [{"role": "user", "content": prompt}],
"max_tokens": self.max_token,
"temperature": self.temperature
}
resp = requests.post(f"{self.base_url}/chat/completions", json=payload, headers=self.headers)
if resp.status_code == 200:
return resp.json()["choices"][0]["message"]["content"]
return f"调用失败:{resp.text}"
def local_chat(self, prompt: str) -> str:
inputs = self.tokenizer(prompt, return_tensors="pt")
outputs = self.model.generate(**inputs, max_new_tokens=self.max_token, temperature=self.temperature)
return self.tokenizer.decode(outputs[0], skip_special_tokens=True)
def chat(self, prompt: str) -> str:
if self.use_local:
return self.local_chat(prompt)
return self.api_chat(prompt)
# 业务工具函数
def text_summary(tool: LLMBaseTool, content: str) -> str:
prompt = f"请精简总结以下文本,控制在100字内:\n{content}"
return tool.chat(prompt)
def batch_process(tool: LLMBaseTool, text_list: list) -> list:
res = []
for text in text_list:
res.append(text_summary(tool, text))
return res
# 演示入口
if __name__ == "__main__":
# 初始化API模式工具,use_local=True切换本地模型
llm_tool = LLMBaseTool(use_local=False)
test_text = "大模型工具落地开发需要兼顾接口稳定性、资源占用、批量处理效率,企业使用时需做好密钥权限管控与输出内容过滤,区分线上API与本地私有化部署两种方案适配不同数据安全需求。"
print("===单文本摘要演示===")
print(text_summary(llm_tool, test_text))
print("\n===批量处理演示===")
batch_data = [test_text, "本地大模型部署需要充足显卡显存,低配置设备可使用量化模型降低硬件要求。"]
print(batch_process(llm_tool, batch_data))python llm_tool.py 即可直接运行演示案例;