|
import logging |
|
import sys |
|
from IPython.display import Markdown, display |
|
import torch |
|
from llama_index.llms.huggingface import HuggingFaceLLM |
|
from llama_index.prompts import PromptTemplate |
|
from llama_index.embeddings.huggingface import HuggingFaceEmbedding |
|
|
|
from llama_index import ( |
|
ServiceContext, |
|
set_global_service_context, |
|
) |
|
|
|
logging.basicConfig(stream=sys.stdout, level=logging.INFO) |
|
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout)) |
|
|
|
|
|
|
|
LLAMA2_7B = "meta-llama/Llama-2-7b-hf" |
|
LLAMA2_7B_CHAT = "meta-llama/Llama-2-7b-chat-hf" |
|
LLAMA2_13B = "meta-llama/Llama-2-13b-hf" |
|
LLAMA2_13B_CHAT = "meta-llama/Llama-2-13b-chat-hf" |
|
LLAMA2_70B = "meta-llama/Llama-2-70b-hf" |
|
LLAMA2_70B_CHAT = "meta-llama/Llama-2-70b-chat-hf" |
|
|
|
selected_model = LLAMA2_7B_CHAT |
|
|
|
SYSTEM_PROMPT = """Você é um assistente de IA que responde a perguntas de maneira amigável, com base nos documentos fornecidos. Aqui estão algumas regras que você sempre segue: |
|
- Gerar saídas legíveis para humanos, evitando criar texto sem sentido. |
|
- Gerar apenas a saída solicitada, sem incluir qualquer outro idioma antes ou depois da saída solicitada. |
|
- Nunca agradecer, expressar felicidade em ajudar, mencionar que é um agente de IA, etc. Apenas responda diretamente. |
|
- Gerar linguagem profissional geralmente usada em documentos comerciais na América do Norte. |
|
- Nunca gerar linguagem ofensiva ou obscena. |
|
- Traduza as suas respostas sempre para Português Brasileiro. Nunca responsa nada em inglês. |
|
""" |
|
|
|
query_wrapper_prompt = PromptTemplate( |
|
"[INST]<<SYS>>\n" + SYSTEM_PROMPT + "<</SYS>>\n\n{query_str}[/INST] " |
|
) |
|
|
|
llm = HuggingFaceLLM( |
|
context_window=4096, |
|
max_new_tokens=2048, |
|
generate_kwargs={"temperature": 0.0, "do_sample": False}, |
|
query_wrapper_prompt=query_wrapper_prompt, |
|
tokenizer_name=selected_model, |
|
model_name=selected_model, |
|
device_map="auto", |
|
|
|
|
|
) |
|
|
|
|
|
embed_model = HuggingFaceEmbedding(model_name="neuralmind/bert-base-portuguese-cased") |
|
|
|
|
|
service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model) |
|
|
|
set_global_service_context(service_context) |
|
|