Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files- src/agent.py +11 -0
- src/tools.py +8 -9
src/agent.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import json
|
| 2 |
|
| 3 |
from langchain_core.messages import SystemMessage, HumanMessage
|
|
|
|
| 4 |
from langchain_openai.chat_models import ChatOpenAI
|
| 5 |
from langfuse import Langfuse, get_client
|
| 6 |
from langfuse.langchain import CallbackHandler
|
|
@@ -31,9 +32,19 @@ class Agent:
|
|
| 31 |
:param langfuse_callback_handler: Langfuse callback handler for
|
| 32 |
tracking and logging interactions.
|
| 33 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
self.chat_model = ChatOpenAI(
|
| 35 |
model=model,
|
| 36 |
api_key=openai_api_key,
|
|
|
|
|
|
|
| 37 |
)
|
| 38 |
with open(system_prompt_path, "r") as file:
|
| 39 |
self.system_prompt = file.read()
|
|
|
|
| 1 |
import json
|
| 2 |
|
| 3 |
from langchain_core.messages import SystemMessage, HumanMessage
|
| 4 |
+
from langchain_core.rate_limiters import InMemoryRateLimiter
|
| 5 |
from langchain_openai.chat_models import ChatOpenAI
|
| 6 |
from langfuse import Langfuse, get_client
|
| 7 |
from langfuse.langchain import CallbackHandler
|
|
|
|
| 32 |
:param langfuse_callback_handler: Langfuse callback handler for
|
| 33 |
tracking and logging interactions.
|
| 34 |
"""
|
| 35 |
+
rate_limiter = InMemoryRateLimiter(
|
| 36 |
+
# <-- Super slow! We can only make a request once every 10 seconds
|
| 37 |
+
requests_per_second=0.1,
|
| 38 |
+
# Wake up every 100 ms to check whether allowed to make a request,
|
| 39 |
+
check_every_n_seconds=0.1,
|
| 40 |
+
# Controls the maximum burst size.
|
| 41 |
+
max_bucket_size=10,
|
| 42 |
+
)
|
| 43 |
self.chat_model = ChatOpenAI(
|
| 44 |
model=model,
|
| 45 |
api_key=openai_api_key,
|
| 46 |
+
json_mode=True,
|
| 47 |
+
rate_limiter=rate_limiter
|
| 48 |
)
|
| 49 |
with open(system_prompt_path, "r") as file:
|
| 50 |
self.system_prompt = file.read()
|
src/tools.py
CHANGED
|
@@ -75,13 +75,12 @@ def wiki_search(query: str) -> str:
|
|
| 75 |
Args:
|
| 76 |
query: The search query."""
|
| 77 |
search_docs = WikipediaLoader(query=query, load_max_docs=2).load()
|
| 78 |
-
formatted_search_docs =
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
])
|
| 87 |
return json.dumps({"wiki_results": formatted_search_docs})
|
|
|
|
| 75 |
Args:
|
| 76 |
query: The search query."""
|
| 77 |
search_docs = WikipediaLoader(query=query, load_max_docs=2).load()
|
| 78 |
+
formatted_search_docs = [
|
| 79 |
+
{
|
| 80 |
+
"source": doc.metadata["source"],
|
| 81 |
+
"page": doc.metadata.get("page", ""),
|
| 82 |
+
"content": doc.page_content,
|
| 83 |
+
}
|
| 84 |
+
for doc in search_docs
|
| 85 |
+
]
|
|
|
|
| 86 |
return json.dumps({"wiki_results": formatted_search_docs})
|