added mistral
Browse files- app.py +31 -14
- requirements.txt +2 -1
app.py
CHANGED
|
@@ -11,6 +11,7 @@ from llama_index.llms.openai import OpenAI
|
|
| 11 |
|
| 12 |
from llama_index.embeddings.openai import OpenAIEmbedding
|
| 13 |
from llama_index.embeddings.huggingface import HuggingFaceEmbedding, HuggingFaceInferenceAPIEmbedding
|
|
|
|
| 14 |
|
| 15 |
from llama_index.core import (
|
| 16 |
VectorStoreIndex,
|
|
@@ -42,7 +43,7 @@ def main():
|
|
| 42 |
elif provider == 'huggingface':
|
| 43 |
llm_list = []
|
| 44 |
elif provider == 'mistralai':
|
| 45 |
-
llm_list =[]
|
| 46 |
elif provider == 'openai':
|
| 47 |
llm_list = ['gpt-3.5-turbo', 'gpt-4', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini']
|
| 48 |
else:
|
|
@@ -91,25 +92,14 @@ def main():
|
|
| 91 |
# Global tokenization needs to be consistent with LLM for token counting
|
| 92 |
# https://docs.llamaindex.ai/en/stable/module_guides/models/llms/
|
| 93 |
if llm_key is not None:
|
| 94 |
-
if provider == '
|
| 95 |
-
os.environ["OPENAI_API_KEY"] = str(llm_key)
|
| 96 |
-
Settings.llm = OpenAI(
|
| 97 |
-
model=llm_name,
|
| 98 |
-
temperature=temperature,
|
| 99 |
-
# max_tokens=MAX_OUTPUT_TOKENS
|
| 100 |
-
)
|
| 101 |
-
Settings.tokenizer = tiktoken.encoding_for_model(llm_name).encode
|
| 102 |
-
Settings.num_output = MAX_OUTPUT_TOKENS
|
| 103 |
-
Settings.embed_model = OpenAIEmbedding()
|
| 104 |
-
Settings.context_window = 4096 # max possible
|
| 105 |
-
elif provider == 'huggingface':
|
| 106 |
if llm_name is not None and embed_name is not None:
|
| 107 |
os.environ['HFTOKEN'] = str(llm_key)
|
| 108 |
Settings.llm = HuggingFaceInferenceAPI(
|
| 109 |
model_name=llm_name,
|
| 110 |
token=os.environ.get("HFTOKEN"),
|
| 111 |
temperature=temperature,
|
| 112 |
-
|
| 113 |
)
|
| 114 |
Settings.tokenizer = AutoTokenizer.from_pretrained(
|
| 115 |
llm_name,
|
|
@@ -120,6 +110,33 @@ def main():
|
|
| 120 |
model_name=embed_name
|
| 121 |
)
|
| 122 |
Settings.context_window = 4096
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
else:
|
| 124 |
raise NotImplementedError(f"{provider} is not supported yet")
|
| 125 |
|
|
|
|
| 11 |
|
| 12 |
from llama_index.embeddings.openai import OpenAIEmbedding
|
| 13 |
from llama_index.embeddings.huggingface import HuggingFaceEmbedding, HuggingFaceInferenceAPIEmbedding
|
| 14 |
+
from llama_index.embeddings.mistralai import MistralAIEmbedding
|
| 15 |
|
| 16 |
from llama_index.core import (
|
| 17 |
VectorStoreIndex,
|
|
|
|
| 43 |
elif provider == 'huggingface':
|
| 44 |
llm_list = []
|
| 45 |
elif provider == 'mistralai':
|
| 46 |
+
llm_list = ["mistral-small-latest", "mistral-medium-latest", "mistral-large-latest", "open-mistral-nemo"]
|
| 47 |
elif provider == 'openai':
|
| 48 |
llm_list = ['gpt-3.5-turbo', 'gpt-4', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini']
|
| 49 |
else:
|
|
|
|
| 92 |
# Global tokenization needs to be consistent with LLM for token counting
|
| 93 |
# https://docs.llamaindex.ai/en/stable/module_guides/models/llms/
|
| 94 |
if llm_key is not None:
|
| 95 |
+
if provider == 'huggingface':
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
if llm_name is not None and embed_name is not None:
|
| 97 |
os.environ['HFTOKEN'] = str(llm_key)
|
| 98 |
Settings.llm = HuggingFaceInferenceAPI(
|
| 99 |
model_name=llm_name,
|
| 100 |
token=os.environ.get("HFTOKEN"),
|
| 101 |
temperature=temperature,
|
| 102 |
+
max_tokens=MAX_OUTPUT_TOKENS
|
| 103 |
)
|
| 104 |
Settings.tokenizer = AutoTokenizer.from_pretrained(
|
| 105 |
llm_name,
|
|
|
|
| 110 |
model_name=embed_name
|
| 111 |
)
|
| 112 |
Settings.context_window = 4096
|
| 113 |
+
elif provider == 'mistralai':
|
| 114 |
+
os.environ['MISTRAL_API_KEY'] = str(llm_key)
|
| 115 |
+
Settings.llm = MistralAI(
|
| 116 |
+
model=llm_name,
|
| 117 |
+
temperature=temperature,
|
| 118 |
+
max_tokens=MAX_OUTPUT_TOKENS,
|
| 119 |
+
random_seed=42,
|
| 120 |
+
safe_mode=True
|
| 121 |
+
)
|
| 122 |
+
# Settings.tokenizer = tiktoken.encoding_for_model(llm_name).encode
|
| 123 |
+
Settings.num_output = MAX_OUTPUT_TOKENS
|
| 124 |
+
Settings.embed_model = MistralAIEmbedding(
|
| 125 |
+
model_name="mistral-embed",
|
| 126 |
+
api_key=os.environ.get("MISTRAL_API_KEY")
|
| 127 |
+
)
|
| 128 |
+
Settings.context_window = 4096 # max possible
|
| 129 |
+
elif provider == 'openai':
|
| 130 |
+
os.environ["OPENAI_API_KEY"] = str(llm_key)
|
| 131 |
+
Settings.llm = OpenAI(
|
| 132 |
+
model=llm_name,
|
| 133 |
+
temperature=temperature,
|
| 134 |
+
max_tokens=MAX_OUTPUT_TOKENS
|
| 135 |
+
)
|
| 136 |
+
Settings.tokenizer = tiktoken.encoding_for_model(llm_name).encode
|
| 137 |
+
Settings.num_output = MAX_OUTPUT_TOKENS
|
| 138 |
+
Settings.embed_model = OpenAIEmbedding()
|
| 139 |
+
Settings.context_window = 4096 # max possible
|
| 140 |
else:
|
| 141 |
raise NotImplementedError(f"{provider} is not supported yet")
|
| 142 |
|
requirements.txt
CHANGED
|
@@ -10,4 +10,5 @@ tiktoken
|
|
| 10 |
llama-parse
|
| 11 |
llama-index-callbacks-langfuse
|
| 12 |
llama-index-embeddings-huggingface
|
| 13 |
-
llama-index-embeddings-openai
|
|
|
|
|
|
| 10 |
llama-parse
|
| 11 |
llama-index-callbacks-langfuse
|
| 12 |
llama-index-embeddings-huggingface
|
| 13 |
+
llama-index-embeddings-openai
|
| 14 |
+
llama-index-embeddings-mistralai
|