File size: 1,576 Bytes
bbfc23a
 
 
 
 
b216a70
af10fd2
 
bbfc23a
 
 
 
 
af10fd2
bbfc23a
 
 
 
 
 
 
 
 
 
 
 
af10fd2
bbfc23a
 
 
1
2
3
4
5
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
from llama_index.core.agent.workflow import AgentWorkflow
from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI
from llama_index.tools.duckduckgo import DuckDuckGoSearchToolSpec
from llama_index.core.tools import FunctionTool
from llama_index.core.workflow import Context
import os
import yaml

async def main(query: str, hf_token: str) -> str: 
    hugging_face_llm = HuggingFaceInferenceAPI(model_name="Qwen/Qwen2.5-Coder-32B-Instruct", token=hf_token)
    
    ddg = DuckDuckGoSearchToolSpec()
    search_tool = FunctionTool.from_defaults(ddg.duckduckgo_full_search)

    agent = AgentWorkflow.from_tools_or_functions(
        [search_tool],
        llm=hugging_face_llm,
        system_prompt="""
    You are a general AI assistant. I will ask you a question. 
    Report your thoughts, and finish your answer with the following template: FINAL ANSWER: [YOUR FINAL ANSWER]. 
    YOUR FINAL ANSWER should be a number OR as few words as possible OR a comma separated list of numbers and/or strings. 
    If you are asked for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified otherwise. 
    If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and write the digits in plain text unless specified otherwise. 
    If you are asked for a comma separated list, apply the above rules depending of whether the element to be put in the list is a number or a string.
"""
    )

    ctx = Context(agent)
    response = await agent.run(query, ctx=ctx)
    return response