Spaces:
Runtime error
Runtime error
Sheshank Joshi
commited on
Commit
·
554ef85
1
Parent(s):
541377c
important changes
Browse files- __pycache__/agent.cpython-312.pyc +0 -0
- __pycache__/basic_tools.cpython-312.pyc +0 -0
- agent.py +13 -3
- app.py +1 -1
- basic_tools.py +3 -3
- local_gpu_embeddings.py +62 -0
__pycache__/agent.cpython-312.pyc
ADDED
Binary file (16.4 kB). View file
|
|
__pycache__/basic_tools.cpython-312.pyc
ADDED
Binary file (5.2 kB). View file
|
|
agent.py
CHANGED
@@ -14,11 +14,20 @@ from basic_tools import *
|
|
14 |
from typing import List
|
15 |
import numpy as np
|
16 |
from datetime import datetime, timedelta
|
|
|
|
|
17 |
import heapq
|
18 |
|
19 |
-
|
|
|
|
|
20 |
embeddings = HuggingFaceEmbeddings(
|
21 |
-
model_name="sentence-transformers/all-mpnet-base-v2"
|
|
|
|
|
|
|
|
|
|
|
22 |
vector_store: FAISS = FAISS.from_texts(
|
23 |
texts=[],
|
24 |
embedding=embeddings)
|
@@ -208,7 +217,8 @@ class BasicAgent:
|
|
208 |
llm = ChatOpenAI(
|
209 |
base_url="http://localhost:11432/v1", # default LM Studio endpoint
|
210 |
api_key="not-used", # required by interface but ignored #type: ignore
|
211 |
-
model="mistral-nemo-instruct-2407",
|
|
|
212 |
temperature=0.2
|
213 |
)
|
214 |
elif provider == "openai":
|
|
|
14 |
from typing import List
|
15 |
import numpy as np
|
16 |
from datetime import datetime, timedelta
|
17 |
+
from sentence_transformers import SentenceTransformer
|
18 |
+
import torch
|
19 |
import heapq
|
20 |
|
21 |
+
os.environ['HF_HOME'] = os.path.join(
|
22 |
+
os.path.expanduser('~'), '.cache', "huggingface")
|
23 |
+
|
24 |
embeddings = HuggingFaceEmbeddings(
|
25 |
+
model_name="sentence-transformers/all-mpnet-base-v2",
|
26 |
+
# hugging_face_api_key=os.getenv("HF_TOKEN"),
|
27 |
+
model_kwargs={"device": "gpu" if torch.cuda.is_available() else "cpu",
|
28 |
+
"token": os.getenv("HF_TOKEN")},
|
29 |
+
show_progress=True,
|
30 |
+
)
|
31 |
vector_store: FAISS = FAISS.from_texts(
|
32 |
texts=[],
|
33 |
embedding=embeddings)
|
|
|
217 |
llm = ChatOpenAI(
|
218 |
base_url="http://localhost:11432/v1", # default LM Studio endpoint
|
219 |
api_key="not-used", # required by interface but ignored #type: ignore
|
220 |
+
# model="mistral-nemo-instruct-2407",
|
221 |
+
model="llama-3.1-8b-claude-3.7-sonnet-reasoning-distilled",
|
222 |
temperature=0.2
|
223 |
)
|
224 |
elif provider == "openai":
|
app.py
CHANGED
@@ -3,7 +3,7 @@ import gradio as gr
|
|
3 |
import requests
|
4 |
import inspect
|
5 |
import pandas as pd
|
6 |
-
from agent import BasicAgent, embeddings, vector_store
|
7 |
from dotenv import load_dotenv
|
8 |
import os
|
9 |
|
|
|
3 |
import requests
|
4 |
import inspect
|
5 |
import pandas as pd
|
6 |
+
from agent import BasicAgent, embeddings, vector_store
|
7 |
from dotenv import load_dotenv
|
8 |
import os
|
9 |
|
basic_tools.py
CHANGED
@@ -13,7 +13,7 @@ from langchain_community.vectorstores import SupabaseVectorStore
|
|
13 |
from langchain_core.messages import SystemMessage, HumanMessage
|
14 |
from langchain_core.tools import tool
|
15 |
from langchain.tools.retriever import create_retriever_tool
|
16 |
-
from
|
17 |
|
18 |
# from supabase.client import Client, create_client
|
19 |
# from langchain.tools.requests.toolkit import RequestsToolkit # Added for RequestsToolKit
|
@@ -140,8 +140,8 @@ def arxiv_search(query: str) -> str:
|
|
140 |
# return response.text
|
141 |
|
142 |
# Adding request toolkits
|
143 |
-
requests_get = RequestsGetTool(requests_wrapper=requests_wrapper)
|
144 |
-
requests_post = RequestsPostTool(requests_wrapper=requests_wrapper)
|
145 |
|
146 |
# @tool
|
147 |
# def requests_post(url: str, data: dict = {}, json: dict = {}, headers: dict = {}) -> str:
|
|
|
13 |
from langchain_core.messages import SystemMessage, HumanMessage
|
14 |
from langchain_core.tools import tool
|
15 |
from langchain.tools.retriever import create_retriever_tool
|
16 |
+
from langchain_community.utilities import RequestsWrapper
|
17 |
|
18 |
# from supabase.client import Client, create_client
|
19 |
# from langchain.tools.requests.toolkit import RequestsToolkit # Added for RequestsToolKit
|
|
|
140 |
# return response.text
|
141 |
|
142 |
# Adding request toolkits
|
143 |
+
requests_get = RequestsGetTool(requests_wrapper=requests_wrapper, allow_dangerous_requests=True)
|
144 |
+
requests_post = RequestsPostTool(requests_wrapper=requests_wrapper, allow_dangerous_requests=True)
|
145 |
|
146 |
# @tool
|
147 |
# def requests_post(url: str, data: dict = {}, json: dict = {}, headers: dict = {}) -> str:
|
local_gpu_embeddings.py
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Using local sentence transformers with GPU
|
2 |
+
# from langchain_community.embeddings import HuggingFaceEmbeddings
|
3 |
+
import torch
|
4 |
+
from sentence_transformers import SentenceTransformer
|
5 |
+
from langchain.embeddings.base import Embeddings
|
6 |
+
from typing import List
|
7 |
+
|
8 |
+
|
9 |
+
class LocalHuggingFaceEmbeddings(Embeddings):
|
10 |
+
"""Use local SentenceTransformer embeddings"""
|
11 |
+
|
12 |
+
def __init__(self, model_name: str = "sentence-transformers/all-mpnet-base-v2"):
|
13 |
+
"""Initialize the embeddings"""
|
14 |
+
|
15 |
+
# Determine device
|
16 |
+
if torch.cuda.is_available():
|
17 |
+
self.device = "cuda"
|
18 |
+
print("Using CUDA for embeddings")
|
19 |
+
elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available():
|
20 |
+
self.device = "mps"
|
21 |
+
print("Using MPS for embeddings")
|
22 |
+
else:
|
23 |
+
self.device = "cpu"
|
24 |
+
print("Using CPU for embeddings")
|
25 |
+
|
26 |
+
# Load the model
|
27 |
+
self.model = SentenceTransformer(model_name, device=self.device)
|
28 |
+
self.model_name = model_name
|
29 |
+
|
30 |
+
def embed_query(self, text: str) -> List[float]:
|
31 |
+
"""Embed a query"""
|
32 |
+
# Creates embedding for a single query
|
33 |
+
embedding = self.model.encode(text, show_progress_bar=False)
|
34 |
+
return embedding.tolist() # Convert numpy array to list
|
35 |
+
|
36 |
+
def embed_documents(self, texts: List[str]) -> List[List[float]]:
|
37 |
+
"""Embed documents"""
|
38 |
+
# Creates embeddings for a list of documents
|
39 |
+
embeddings = self.model.encode(texts, show_progress_bar=True)
|
40 |
+
return embeddings.tolist() # Convert numpy arrays to lists
|
41 |
+
|
42 |
+
|
43 |
+
if __name__ == "__main__":
|
44 |
+
# Create the local embeddings model
|
45 |
+
embeddings = LocalHuggingFaceEmbeddings(
|
46 |
+
model_name="sentence-transformers/all-mpnet-base-v2")
|
47 |
+
|
48 |
+
print("Is CUDA Available? ", torch.cuda.is_available())
|
49 |
+
print("Is MPS Available? ", torch.backends.mps.is_available())
|
50 |
+
|
51 |
+
# Test embeddings
|
52 |
+
sentence = "Hello, how are you?"
|
53 |
+
embed = embeddings.embed_query(sentence)
|
54 |
+
print(f"Embedding length: {len(embed)}")
|
55 |
+
print(f"First few values: {embed[:5]}")
|
56 |
+
|
57 |
+
# Test with multiple sentences
|
58 |
+
sentences = ["Hello, how are you?", "I am fine, thank you.",
|
59 |
+
"What is the weather like today?"]
|
60 |
+
embeds = embeddings.embed_documents(sentences)
|
61 |
+
print(f"Number of embeddings: {len(embeds)}")
|
62 |
+
print(f"Embedding dimensions: {len(embeds[0])}")
|