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
|