MOH749 commited on
Commit
e5325a9
1 Parent(s): c7c08b0

Upload ABL-Agents.py

Browse files
Files changed (1) hide show
  1. ABL-Agents.py +86 -0
ABL-Agents.py ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import requests
3
+ from dotenv import load_dotenv
4
+ from langchain.agents import AgentType, initialize_agent, load_tools
5
+ from langchain_openai import OpenAI
6
+ from transformers import AlbertTokenizer, AlbertForSequenceClassification
7
+
8
+
9
+ load_dotenv()
10
+ openai_api_key = os.getenv('OPENAI_API_KEY')
11
+
12
+ from serpapi import GoogleSearch
13
+
14
+ params = {
15
+
16
+ "engine": "google",
17
+ "q": "ESPN",
18
+ "api_key": "1e2cf72abd974364e933d854720ec3704bb86196ee9a25267e53947192afada6"
19
+ }
20
+
21
+ search = GoogleSearch(params)
22
+ results = search.get_dict()
23
+ organic_results = results["organic_results"]
24
+
25
+ llm = OpenAI(api_key=openai_api_key,temperature=0)
26
+ tools = load_tools(["serpapi", "llm-math"], llm=llm)
27
+
28
+ class fact_checking_pipeline:
29
+ tokenizer= AlbertTokenizer.from_pretrained('Dzeniks/alberta_fact_checking')
30
+ model = AlbertForSequenceClassification.from_pretrained('Dzeniks/alberta_fact_checking')
31
+
32
+
33
+ #Configure Langchain Agent
34
+ agent_chain = initialize_agent(
35
+ tools,
36
+ llm,
37
+ agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
38
+ verbose=True,
39
+ )
40
+
41
+ class RefereeAgent:
42
+ def __init__(self):
43
+ self.serpapi_api_key = "1e2cf72abd974364e933d854720ec3704bb86196ee9a25267e53947192afada6"
44
+ self.fact_checking_pipeline = AlbertForSequenceClassification.from_pretrained('Dzeniks/alberta_fact_checking')
45
+
46
+ def search_serpapi(self, query):
47
+ search_url = "https://serpapi.com/search"
48
+ params = {
49
+ "q": query,
50
+ "api_key": self.serpapi_api_key,
51
+ }
52
+ response = requests.get(search_url, params=params)
53
+ return response.json()
54
+
55
+ def extract_relevant_info(self, serpapi_results):
56
+ relevant_info = []
57
+ for result in serpapi_results.get('organic_results', []):
58
+ title = result.get('title')
59
+ snippet = result.get('snippet')
60
+ link = result.get('link')
61
+ relevant_info.append({'title': title, 'snippet': snippet, 'link': link})
62
+ return relevant_info
63
+
64
+ def fact_check(self, statement):
65
+ serpapi_results = self.search_serpapi(statement)
66
+ relevant_info = self.extract_relevant_info(serpapi_results)
67
+
68
+ if not relevant_info:
69
+ return "No relevant data found."
70
+
71
+ context = " ".join([info['snippet'] for info in relevant_info])
72
+ result = self.fact_checking_pipeline(f"{statement} [SEP] {context}")
73
+
74
+ label = result[0]['label']
75
+ score = result[0]['score']
76
+
77
+ if label == "ENTAILMENT":
78
+ return f"The statement is likely true. Confidence score: {score}"
79
+ else:
80
+ return f"The statement is likely false. Confidence score: {score}"
81
+
82
+ # Example usage
83
+ referee = RefereeAgent()
84
+ statement = "LeBron James is the most accomplished NBA player of all time, he has won 4 NBA championships."
85
+ referee_result = referee.fact_check(statement)
86
+ print(referee_result)