|
from llama_index.core.agent.workflow import AgentWorkflow |
|
from llama_index.core.workflow import Context |
|
from llama_index.core.tools import FunctionTool |
|
from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI |
|
from llama_index.tools.duckduckgo import DuckDuckGoSearchToolSpec |
|
from llama_index.tools.wikipedia import WikipediaToolSpec |
|
from llama_index.core.tools.tool_spec.load_and_search import LoadAndSearchToolSpec |
|
from llama_index.readers.web import SimpleWebPageReader |
|
from llama_index.core.tools.ondemand_loader_tool import OnDemandLoaderTool |
|
|
|
class BasicAgent: |
|
def __init__(self): |
|
llm = HuggingFaceInferenceAPI(model_name="Qwen/Qwen2.5-Coder-32B-Instruct") |
|
|
|
|
|
tool_spec = DuckDuckGoSearchToolSpec() |
|
search_tool = FunctionTool.from_defaults(tool_spec.duckduckgo_full_search) |
|
|
|
wiki_spec = WikipediaToolSpec() |
|
wiki_search_tool = wiki_spec.to_tool_list()[1] |
|
|
|
|
|
|
|
wiki_spec = WikipediaToolSpec() |
|
wiki_search_tool = wiki_spec.to_tool_list()[1] |
|
|
|
|
|
|
|
wiki_search_tool_las = LoadAndSearchToolSpec.from_defaults(wiki_search_tool).to_tool_list() |
|
|
|
webpage_tool = OnDemandLoaderTool.from_defaults( |
|
SimpleWebPageReader(html_to_text=True), |
|
name="Webpage search tool", |
|
description="A tool for loading the content of a webpage and querying it for information", |
|
) |
|
|
|
|
|
self.agent = AgentWorkflow.from_tools_or_functions( |
|
wiki_search_tool_las, |
|
llm=llm, |
|
verbose=True |
|
) |
|
|
|
|
|
|
|
async def __call__(self, question: str) -> str: |
|
response = await self.agent.run(user_msg=question) |
|
return response.response.content |
|
|