Source code for xrag.eval.EvalModelAgent
import argparse
import deepeval.api
import torch
from deepeval.models import GPTModel
from langchain_openai import ChatOpenAI
from llama_index.llms.huggingface import HuggingFaceLLM
from llama_index.llms.openai import OpenAI
from transformers import AutoModelForCausalLM, AutoTokenizer
from deepeval.models.base_model import DeepEvalBaseLLM
from uptrain import Settings
from .DeepEvalLocalModel import DeepEvalLocalModel
load_tokenizer = []
llm_args = {"context_window": 4096, "max_new_tokens": 256,
"generate_kwargs": {"temperature": 0.7, "top_k": 50, "top_p": 0.95}}
[docs]
def qwen_completion_to_prompt(completion):
tokenizer = load_tokenizer[0]
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": completion}
]
return tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
[docs]
class EvalModelAgent():
def __init__(self, args):
self.args = args
llamaIndex_LocalmodelName = self.args.llamaIndexEvaluateModel
deepEval_LocalModelName = self.args.deepEvalEvaluateModel
uptrain_LocalModelName = self.args.upTrainEvaluateModel
api_name = self.args.api_name
api_key = self.args.api_key
api_base = self.args.api_base
print("EvalModelName:")
print(api_name)
print("EvalModelAPI:")
print(api_key)
if api_name == "":
self._llama_model = AutoModelForCausalLM.from_pretrained(llamaIndex_LocalmodelName,
torch_dtype=torch.float16,
device_map="auto").eval()
self._llama_tokenizer = AutoTokenizer.from_pretrained(llamaIndex_LocalmodelName)
load_tokenizer.append(self._llama_tokenizer)
self.llamaModel = HuggingFaceLLM(context_window=llm_args["context_window"],
max_new_tokens=llm_args["max_new_tokens"],
completion_to_prompt=qwen_completion_to_prompt,
generate_kwargs=llm_args["generate_kwargs"],
model=self._llama_model,
tokenizer=self._llama_tokenizer,
device_map="cuda:0",)
else:
self.llamaModel = OpenAI(api_key=api_key, api_base=api_base,
model=api_name)
if api_name == "":
if deepEval_LocalModelName == llamaIndex_LocalmodelName:
self._deepEval_model = self._llama_model
self._deepEval_tokenizer = self._llama_tokenizer
else:
self._deepEval_model = AutoModelForCausalLM.from_pretrained(deepEval_LocalModelName,
torch_dtype=torch.float16,
device_map="auto").eval()
self._deepEval_tokenizer = AutoTokenizer.from_pretrained(deepEval_LocalModelName)
self.deepEvalModel = DeepEvalLocalModel(model=self._deepEval_model,
tokenizer=self._deepEval_tokenizer)
else:
# 不再有效了
# deepeval.api.API_BASE_URL = 'https://uiuiapi.com/v1'
# self.deepEvalModel = api_name
self._deepEval_model = ChatOpenAI(openai_api_key=api_key, openai_api_base=api_base,
model_name=api_name)
self.deepEvalModel = DeepEvalLocalModel(model=self._deepEval_model,
tokenizer="")
if api_name == "":
self.uptrainSetting = Settings(model="ollama/"+uptrain_LocalModelName)
else:
self.uptrainSetting = Settings(
model=api_name,
openai_api_key=api_key,
base_url=api_base,
)