Blogen-V0.1 Added features. WIP
This commit is contained in:
69
lib/gpt_online_researcher.py
Normal file
69
lib/gpt_online_researcher.py
Normal file
@@ -0,0 +1,69 @@
|
||||
################################################################
|
||||
#
|
||||
# GPT Researcher is an autonomous agent designed for comprehensive online research on a variety of tasks.
|
||||
# The agent can produce detailed, factual and unbiased research reports, with customization options for
|
||||
# focusing on relevant resources, outlines, and lessons. Inspired by the recent Plan-and-Solve and RAG papers,
|
||||
# GPT Researcher addresses issues of speed, determinism and reliability, offering a more stable
|
||||
# performance and increased speed through parallelized agent work, as opposed to synchronous operations.
|
||||
#
|
||||
# The main idea is to run "planner" and "execution" agents, whereas the planner generates questions to research,
|
||||
# and the execution agents seek the most related information based on each generated research question.
|
||||
# Finally, the planner filters and aggregates all related information and creates a research report.
|
||||
#
|
||||
# The agents leverage both gpt3.5-turbo and gpt-4-turbo (128K context) to complete a research task.
|
||||
# We optimize for costs using each only when necessary.
|
||||
# The average research task takes around 3 minutes to complete, and costs ~$0.1.
|
||||
#
|
||||
##############################################################
|
||||
|
||||
# import and connect
|
||||
from tavily import TavilyClient
|
||||
|
||||
def do_research_on(research_query):
|
||||
"""
|
||||
Basically sending in the blog title to do research on.
|
||||
gpt-researcher API version to do extensive web research for given keywords.
|
||||
"""
|
||||
# $ export TAVILY_API_KEY={Your Tavily API Key here}
|
||||
try:
|
||||
client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY"))
|
||||
except Exception as err:
|
||||
SystemExit(f"Failed to create TavilyClient: {err}")
|
||||
|
||||
try:
|
||||
# run tavily search
|
||||
research_content = client.search(
|
||||
research_query,
|
||||
search_depth="advanced",
|
||||
include_answer=True,
|
||||
max_results=10)["results"]
|
||||
except Exception as err:
|
||||
SystemExit(f"Unable to do tavily search: {err}")
|
||||
|
||||
# setup prompt
|
||||
prompt = [{
|
||||
"role": "system",
|
||||
"content": f'You are an AI critical thinker research assistant. '\
|
||||
f'Your sole purpose is to write well written, critically acclaimed,'\
|
||||
f'objective and structured reports on given text.'
|
||||
}, {
|
||||
"role": "user",
|
||||
"content": f'Information: """{research_content}"""\n\n' \
|
||||
f'Using the above information, answer the following'\
|
||||
f'query: "{research_query}" in a detailed report --'\
|
||||
f'Please use MLA format and markdown syntax.'
|
||||
}]
|
||||
|
||||
# run gpt-4
|
||||
try:
|
||||
lc_messages = convert_openai_messages(prompt)
|
||||
research_report = ChatOpenAI(
|
||||
model='gpt-4',
|
||||
openai_api_key=openai_api_key
|
||||
).invoke(lc_messages).content
|
||||
except Exception as err:
|
||||
SystemExit(f"Failed to convert OpenAI message and get response.")
|
||||
|
||||
# print report
|
||||
print(research_report)
|
||||
return research_report
|
||||
Reference in New Issue
Block a user