|
|
from langchain_openai import ChatOpenAI
|
|
|
from langchain.agents import Tool
|
|
|
from langchain_community.utilities import WikipediaAPIWrapper
|
|
|
import requests
|
|
|
import os
|
|
|
from backend.config import OPENAI_API_KEY, SERPER_API_KEY
|
|
|
|
|
|
llm = ChatOpenAI(
|
|
|
model="gpt-3.5-turbo",
|
|
|
temperature=0,
|
|
|
openai_api_key=OPENAI_API_KEY
|
|
|
)
|
|
|
|
|
|
|
|
|
import wikipedia
|
|
|
from langchain.tools import Tool
|
|
|
|
|
|
def search_wikipedia(query):
|
|
|
try:
|
|
|
results = wikipedia.search(query, results=10)
|
|
|
if not results:
|
|
|
return {"error": "No results found on Wikipedia."}
|
|
|
|
|
|
summaries = []
|
|
|
for title in results:
|
|
|
try:
|
|
|
page = wikipedia.page(title)
|
|
|
summary = page.summary
|
|
|
url = page.url
|
|
|
summaries.append({"title": title, "summary": summary, "url": url})
|
|
|
except wikipedia.exceptions.DisambiguationError as e:
|
|
|
summaries.append({"error": f"Disambiguation: {str(e)}"})
|
|
|
except wikipedia.exceptions.HTTPTimeoutError:
|
|
|
summaries.append({"error": "Wikipedia request timed out."})
|
|
|
except Exception as e:
|
|
|
summaries.append({"error": str(e)})
|
|
|
return summaries
|
|
|
except Exception as e:
|
|
|
return {"error": str(e)}
|
|
|
|
|
|
|
|
|
wiki_tool = Tool.from_function(
|
|
|
func=search_wikipedia,
|
|
|
name="WikipediaAPI",
|
|
|
description="Fetch summaries from Wikipedia based on search query"
|
|
|
)
|
|
|
|
|
|
|
|
|
from langchain.tools import Tool
|
|
|
|
|
|
def fetch_search_results(query):
|
|
|
url = "https://google.serper.dev/search"
|
|
|
headers = {
|
|
|
"X-API-KEY": SERPER_API_KEY,
|
|
|
"Content-Type": "application/json"
|
|
|
}
|
|
|
|
|
|
data = {
|
|
|
"q": query,
|
|
|
"num": 10
|
|
|
}
|
|
|
|
|
|
try:
|
|
|
response = requests.post(url, json=data, headers=headers)
|
|
|
if response.status_code == 200:
|
|
|
return response.json()
|
|
|
else:
|
|
|
return {"error": f"Serper API error: {response.status_code}"}
|
|
|
except requests.exceptions.RequestException as e:
|
|
|
return {"error": f"Request failed: {str(e)}"}
|
|
|
|
|
|
|
|
|
serper_tool = Tool.from_function(
|
|
|
func=fetch_search_results,
|
|
|
name="SerperAPI",
|
|
|
description="Search the web using the Serper API"
|
|
|
)
|
|
|
|
|
|
|
|
|
from together import Together
|
|
|
from backend.config import TOGETHER_API_KEY
|
|
|
|
|
|
client = Together(api_key=TOGETHER_API_KEY)
|
|
|
|
|
|
def deepseek_v3_query(query):
|
|
|
try:
|
|
|
response = client.chat.completions.create(
|
|
|
model="deepseek-ai/DeepSeek-V3",
|
|
|
messages=[{"role": "user", "content": query}],
|
|
|
stream=True
|
|
|
)
|
|
|
|
|
|
result = ""
|
|
|
for token in response:
|
|
|
if hasattr(token, 'choices'):
|
|
|
result += token.choices[0].delta.content
|
|
|
return result
|
|
|
except Exception as e:
|
|
|
return {"error": f"DeepSeek-V3 API error: {str(e)}"}
|
|
|
|
|
|
|
|
|
deepseek_tool = Tool.from_function(
|
|
|
func=deepseek_v3_query,
|
|
|
name="DeepSeekV3",
|
|
|
description="Query DeepSeek-V3 AI model from Together for advanced text completions"
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
search_tools = [wiki_tool, serper_tool, deepseek_tool]
|
|
|
|