mirror of
https://github.com/datawhalechina/self-llm.git
synced 2026-09-21 12:49:53 +08:00
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
from langchain.llms.base import LLM
|
|
from typing import Any, List, Optional
|
|
from langchain.callbacks.manager import CallbackManagerForLLMRun
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig, LlamaTokenizerFast
|
|
import torch
|
|
|
|
class XVERSE_LLM(LLM):
|
|
# 基于本地 XVERSE-7B-Chat 自定义 LLM 类
|
|
tokenizer: AutoTokenizer = None
|
|
model: AutoModelForCausalLM = None
|
|
|
|
def __init__(self, mode_name_or_path :str):
|
|
|
|
super().__init__()
|
|
print("正在从本地加载模型...")
|
|
self.tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
|
|
self.model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.float16, trust_remote_code=True).cuda()
|
|
self.model = self.model.eval()
|
|
print("完成本地模型的加载")
|
|
|
|
def _call(self, prompt : str, stop: Optional[List[str]] = None,
|
|
run_manager: Optional[CallbackManagerForLLMRun] = None,
|
|
**kwargs: Any):
|
|
|
|
# 构建消息
|
|
history = [{"role": "user", "content": prompt}]
|
|
|
|
response = self.model.chat(self.tokenizer, history)
|
|
|
|
return response
|
|
@property
|
|
def _llm_type(self) -> str:
|
|
return "XVERSE_LLM" |