一個用於大型語言模型(LLM)和嵌入模型的綜合工具包,支持聊天、嵌入向量和重排功能,具備靈活的配置選項和多引擎支持。無論是處理同步還是異步調用,LLM 工具都能高效處理各種 AI 模型集成任務。
- LLM 聊天功能:與大型語言模型(如 GPT)進行交互,支持流式輸出和格式化響應
- 嵌入模型:支持單句和多句嵌入向量生成,用於語義分析和檢索
- 重排模型:根據查詢相似度對文檔進行排序,支持單句和多句輸入
- 高度可配置:通過 YAML 配置文件靈活調整參數
- 多引擎支持:支持 Azure OpenAI、本地模型和各種嵌入引擎
- 異步支持:提供異步接口以提升性能
- 記憶管理:內置聊天記憶管理,可自定義歷史長度
- 響應緩存:可選的 LLM 響應緩存以提高效率
- LLM 引擎:兼容 openai sdk 格式
- 嵌入模型:m3e-base、bge-m3 及其他嵌入模型
- 重排模型:bge-reranker-large 及其他重排模型
# 克隆倉庫
git clone https://github.com/LLMSystems/llm_tools.git
cd llm_tools
# 安裝包
pip install -e .
# 或者安裝開發依賴
pip install -e ".[dev]"基於 example_configs/models.yaml 創建 configs/models.yaml 文件並配置模型參數:
params:
default:
temperature: 0.2
max_tokens: 1000
top_p: 1
frequency_penalty: 1.4
presence_penalty: 0
LLM_engines:
gpt-4o:
model: "gpt-4o"
azure_api_base: "your_azure_api_base_url"
azure_api_key: "your_azure_api_key"
azure_api_version: "your_azure_api_version"
Qwen2-7B-Instruct:
model: "Qwen2-7B-Instruct"
local_api_key: "Empty"
local_base_url: "http://localhost:8887/v1"
translate_to_cht: true # 可選:翻譯為繁體中文
embedding_models:
m3e-base:
model: "m3e-base"
local_api_key: "Empty"
local_base_url: "http://localhost:8887/v1"
reranking_models:
bge-reranker-large:
model: "bge-reranker-large"
local_api_key: "Empty"
local_base_url: "http://localhost:8887/v1"- DEFAULT:默認參數,包括
temperature、max_tokens、top_p、frequency_penalty、presence_penalty - Azure OpenAI:配置
azure_api_base、azure_api_key、azure_api_version(注意:使用可能產生費用) - 本地模型:配置
local_api_key和local_base_url - translate_to_cht:設為
True時自動將結果翻譯為繁體中文
from llm_chat import LLMChat
# 初始化 LLM 聊天
llmchat = LLMChat(model="gpt-4o", config_path="./configs/models.yaml")
# 簡單聊天
response, history = llmchat.chat(query="你好,你怎麼樣?")
print(response)
# 帶歷史記錄的交互聊天
history = []
while True:
user_input = input("您:")
if user_input.lower() == "quit":
break
response, history = llmchat.chat(query=user_input, history=history)
print(f"AI:{response}")from llm_chat import LLMChat
llmchat = LLMChat(model="gpt-4o", config_path="./configs/models.yaml")
# 流式響應
for chunk in llmchat.chat(query="給我講個故事", stream=True):
print(chunk, end="", flush=True)
print()from llm_chat import LLMChat
from memory import ChatMemory
# 初始化聊天記憶
system_prompt = "你是一個專業的助手,會用繁體中文回答問題。"
chat_memory = ChatMemory(system_prompt=system_prompt, max_len=1000)
llmchat = LLMChat(model="gpt-4o", config_path="./configs/models.yaml")
# 流式處理帶記憶
while True:
user_input = input("您:")
if user_input.lower() == "quit":
break
text = ''
for chunk in llmchat.chat(query=user_input, history=chat_memory.get_history(), stream=True):
text += chunk
print(chunk, end="", flush=True)
print()
chat_memory.add_user_message(user_input)
chat_memory.add_system_response(text)import numpy as np
from embed_rerank_model import EmbeddingModel, RerankingModel
# 嵌入向量生成
embed_model = EmbeddingModel(embedding_model="m3e-base", config_path="./configs/models.yaml")
query_embedding = np.array(embed_model.embed_query("食物很美味。"))
print(f"嵌入向量形狀:{query_embedding.shape}")
# 文檔嵌入
documents = ["食物很棒。", "服務很優秀。", "氣氛很不錯。"]
doc_embeddings = embed_model.embed_documents(documents)
print(f"文檔嵌入:{len(doc_embeddings)} 個向量")
# 文檔重排
rerank_model = RerankingModel(reranking_model="bge-reranker-large", config_path="./configs/models.yaml")
query = "告訴我食物質量如何"
ranked_docs = rerank_model.rerank_documents(documents, query)
print(f"重排後的文檔:{ranked_docs}")import asyncio
from async_llm_chat import AsyncLLMChat
async def async_chat_example():
# 初始化異步 LLM 聊天
async_llm = AsyncLLMChat(model="gpt-4o", config_path="./configs/models.yaml")
# 並發請求
async def query_a():
response, _ = await async_llm.chat(query="什麼是人工智能?")
return response
async def query_b():
response, _ = await async_llm.chat(query="什麼是機器學習?")
return response
# 並發執行
responses = await asyncio.gather(query_a(), query_b())
for i, response in enumerate(responses):
print(f"響應 {i+1}:{response}")
# 運行異步示例
asyncio.run(async_chat_example())from async_llm_chat import AsyncLLMChat
# 啟用緩存
cache_config = {
'enable': True,
'cache_file': './cache/llm_cache.json'
}
async_llm = AsyncLLMChat(
model="gpt-4o",
config_path="./configs/models.yaml",
cache_config=cache_config
)llm_tools/
├── llm_chat.py # 同步 LLM 聊天功能
├── async_llm_chat.py # 異步 LLM 聊天功能
├── embed_rerank_model.py # 嵌入和重排模型
├── memory.py # 聊天記憶管理
├── llm_response_cache.py # 響應緩存功能
├── tutorial.py # 教程示例
├── tutorial.ipynb # Jupyter 筆記本教程
├── example_configs/ # 配置示例
│ └── models.yaml # 模型配置模板
├── pyproject.toml # 項目配置
└── README_zh-CN.md # 本文件
└── README.md # 本文件(英文)
詳細使用示例請參考:
tutorial.py- Python 腳本示例tutorial.ipynb- 帶有交互式示例的 Jupyter 筆記本
This project is licensed under the MIT License.