Update ABL-Agents.py
Browse files- ABL-Agents.py +86 -86
ABL-Agents.py
CHANGED
@@ -1,86 +1,86 @@
|
|
1 |
-
import os
|
2 |
-
import
|
3 |
-
from
|
4 |
-
from langchain.agents import AgentType, initialize_agent, load_tools
|
5 |
-
from
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
"
|
17 |
-
"
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
1 |
+
import os
|
2 |
+
from langchain_huggingface import HuggingFacePipeline
|
3 |
+
from langchain_huggingface.llms import HuggingFacePipeline
|
4 |
+
from langchain.agents import AgentType, initialize_agent, load_tools
|
5 |
+
from transformers import pipeline
|
6 |
+
|
7 |
+
|
8 |
+
load_dotenv()
|
9 |
+
SERPAPI_API_KEY = os.getenv('SERPAPI_API_KEY')
|
10 |
+
|
11 |
+
from serpapi import GoogleSearch
|
12 |
+
|
13 |
+
params = {
|
14 |
+
|
15 |
+
"engine": "google",
|
16 |
+
"q": "ESPN",
|
17 |
+
"api_key": "1e2cf72abd974364e933d854720ec3704bb86196ee9a25267e53947192afada6"
|
18 |
+
}
|
19 |
+
|
20 |
+
search = GoogleSearch(params)
|
21 |
+
results = search.get_dict()
|
22 |
+
organic_results = results["organic_results"]
|
23 |
+
|
24 |
+
llm = HuggingFacePipeline(pipeline=pipeline("text2text-generation",
|
25 |
+
model="google/flan-t5-xl",
|
26 |
+
model_kwargs={"temperature":0.5},
|
27 |
+
huggingfacehub_api_token='<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>'
|
28 |
+
|
29 |
+
))
|
30 |
+
|
31 |
+
tools = load_tools(["serpapi", "llm-math"], llm=llm, serpapi_api_key=SERPAPI_API_KEY)
|
32 |
+
|
33 |
+
class fact_checking_pipeline:
|
34 |
+
fact_checking_pipeline = pipeline("text-classification",
|
35 |
+
model="typeform/distilbert-base-uncased-mnli")
|
36 |
+
|
37 |
+
|
38 |
+
#Configure Langchain Agent
|
39 |
+
agent_chain = initialize_agent(
|
40 |
+
tools,
|
41 |
+
llm,
|
42 |
+
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
|
43 |
+
verbose=True,
|
44 |
+
)
|
45 |
+
|
46 |
+
class RefereeAgent:
|
47 |
+
def __init__(self):
|
48 |
+
self.serpapi_api_key = "1e2cf72abd974364e933d854720ec3704bb86196ee9a25267e53947192afada6"
|
49 |
+
self.fact_checking_pipeline = pipeline("text-classification",
|
50 |
+
model="typeform/distilbert-base-uncased-mnli")
|
51 |
+
|
52 |
+
def search_serpapi(self, query):
|
53 |
+
search_url = "https://serpapi.com/search"
|
54 |
+
params = {
|
55 |
+
"q": query,
|
56 |
+
"api_key": self.serpapi_api_key,
|
57 |
+
}
|
58 |
+
response = requests.get(search_url, params=params)
|
59 |
+
return response.json()
|
60 |
+
|
61 |
+
def extract_relevant_info(self, serpapi_results):
|
62 |
+
relevant_info = []
|
63 |
+
for result in serpapi_results.get('organic_results', []):
|
64 |
+
title = result.get('title')
|
65 |
+
snippet = result.get('snippet')
|
66 |
+
link = result.get('link')
|
67 |
+
relevant_info.append({'title': title, 'snippet': snippet, 'link': link})
|
68 |
+
return relevant_info
|
69 |
+
|
70 |
+
def fact_check(self, statement):
|
71 |
+
serpapi_results = self.search_serpapi(statement)
|
72 |
+
relevant_info = self.extract_relevant_info(serpapi_results)
|
73 |
+
|
74 |
+
if not relevant_info:
|
75 |
+
return "No relevant data found."
|
76 |
+
|
77 |
+
context = " ".join([info['snippet'] for info in relevant_info])
|
78 |
+
result = self.fact_checking_pipeline(f"{statement} [SEP] {context}")
|
79 |
+
|
80 |
+
label = result[0]['label']
|
81 |
+
score = result[0]['score']
|
82 |
+
|
83 |
+
if label == "ENTAILMENT":
|
84 |
+
return f"The statement is likely true. Confidence score: {score}"
|
85 |
+
else:
|
86 |
+
return f"The statement is likely false. Confidence score: {score}"
|