Close Menu
    Trending
    • Revisiting Benchmarking of Tabular Reinforcement Learning Methods
    • Is Your AI Whispering Secrets? How Scientists Are Teaching Chatbots to Forget Dangerous Tricks | by Andreas Maier | Jul, 2025
    • Qantas data breach to impact 6 million airline customers
    • He Went From $471K in Debt to Teaching Others How to Succeed
    • An Introduction to Remote Model Context Protocol Servers
    • Blazing-Fast ML Model Serving with FastAPI + Redis (Boost 10x Speed!) | by Sarayavalasaravikiran | AI Simplified in Plain English | Jul, 2025
    • AI Knowledge Bases vs. Traditional Support: Who Wins in 2025?
    • Why Your Finance Team Needs an AI Strategy, Now
    AIBS News
    • Home
    • Artificial Intelligence
    • Machine Learning
    • AI Technology
    • Data Science
    • More
      • Technology
      • Business
    AIBS News
    Home»Artificial Intelligence»AI Agents from Zero to Hero – Part 1
    Artificial Intelligence

    AI Agents from Zero to Hero – Part 1

    Team_AIBS NewsBy Team_AIBS NewsFebruary 21, 2025No Comments11 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Intro

    AI Brokers are autonomous packages that carry out duties, make choices, and talk with others. Usually, they use a set of instruments to assist full duties. In GenAI functions, these Brokers course of sequential reasoning and may use exterior instruments (like net searches or database queries) when the LLM information isn’t sufficient. In contrast to a primary chatbot, which generates random textual content when unsure, an AI Agent prompts instruments to offer extra correct, particular responses.

    We’re transferring nearer and nearer to the idea of Agentic Ai: techniques that exhibit the next degree of autonomy and decision-making skill, with out direct human intervention. Whereas at this time’s AI Brokers reply reactively to human inputs, tomorrow’s Agentic AIs proactively interact in problem-solving and may alter their habits primarily based on the scenario.

    As we speak, constructing Brokers from scratch is changing into as straightforward as coaching a logistic regression mannequin 10 years in the past. Again then, Scikit-Be taught supplied a simple library to shortly practice Machine Studying fashions with just some traces of code, abstracting away a lot of the underlying complexity.

    On this tutorial, I’m going to point out the way to construct from scratch several types of AI Brokers, from easy to extra superior techniques. I’ll current some helpful Python code that may be simply utilized in different comparable instances (simply copy, paste, run) and stroll by each line of code with feedback so as to replicate this instance.

    Setup

    As I mentioned, anybody can have a customized Agent working domestically at no cost with out GPUs or API keys. The one obligatory library is Ollama (pip set up ollama==0.4.7), because it permits customers to run LLMs domestically, while not having cloud-based providers, giving extra management over information privateness and efficiency.

    To begin with, that you must obtain Ollama from the web site. 

    Then, on the immediate shell of your laptop computer, use the command to obtain the chosen LLM. I’m going with Alibaba’s Qwen, because it’s each sensible and lite.

    After the obtain is accomplished, you may transfer on to Python and begin writing code.

    import ollama
    llm = "qwen2.5"

    Let’s check the LLM:

    stream = ollama.generate(mannequin=llm, immediate=""'what time is it?''', stream=True)
    for chunk in stream:
        print(chunk['response'], finish='', flush=True)

    Clearly, the LLM per se could be very restricted and it may well’t do a lot moreover chatting. Due to this fact, we have to present it the chance to take motion, or in different phrases, to activate Instruments.

    Probably the most frequent instruments is the power to search the Web. In Python, the simplest option to do it’s with the well-known non-public browser DuckDuckGo (pip set up duckduckgo-search==6.3.5). You’ll be able to straight use the unique library or import the LangChain wrapper (pip set up langchain-community==0.3.17). 

    With Ollama, to be able to use a Software, the perform have to be described in a dictionary.

    from langchain_community.instruments import DuckDuckGoSearchResults
    def search_web(question: str) -> str:
      return DuckDuckGoSearchResults(backend="information").run(question)
    
    tool_search_web = {'sort':'perform', 'perform':{
      'title': 'search_web',
      'description': 'Search the online',
      'parameters': {'sort': 'object',
                    'required': ['query'],
                    'properties': {
                        'question': {'sort':'str', 'description':'the subject or topic to look on the internet'},
    }}}}
    ## check
    search_web(question="nvidia")

    Web searches may very well be very broad, and I wish to give the Agent the choice to be extra exact. Let’s say, I’m planning to make use of this Agent to find out about monetary updates, so I can provide it a selected instrument for that subject, like looking solely a finance web site as an alternative of the entire net.

    def search_yf(question: str) -> str:  engine = DuckDuckGoSearchResults(backend="information")
      return engine.run(f"web site:finance.yahoo.com {question}")
    
    tool_search_yf = {'sort':'perform', 'perform':{
      'title': 'search_yf',
      'description': 'Seek for particular monetary information',
      'parameters': {'sort': 'object',
                    'required': ['query'],
                    'properties': {
                        'question': {'sort':'str', 'description':'the monetary subject or topic to look'},
    }}}}
    
    ## check
    search_yf(question="nvidia")

    Easy Agent (WebSearch)

    For my part, probably the most primary Agent ought to a minimum of be capable to select between one or two Instruments and re-elaborate the output of the motion to offer the consumer a correct and concise reply. 

    First, that you must write a immediate to explain the Agent’s goal, the extra detailed the higher (mine could be very generic), and that would be the first message within the chat historical past with the LLM. 

    immediate=""'You might be an assistant with entry to instruments, you will need to determine when to make use of instruments to reply consumer message.''' 
    messages = [{"role":"system", "content":prompt}]

    As a way to preserve the chat with the AI alive, I’ll use a loop that begins with consumer’s enter after which the Agent is invoked to reply (which is usually a textual content from the LLM or the activation of a Software).

    whereas True:
        ## consumer enter
        strive:
            q = enter('🙂 >')
        besides EOFError:
            break
        if q == "stop":
            break
        if q.strip() == "":
            proceed
        messages.append( {"function":"consumer", "content material":q} )
       
        ## mannequin
        agent_res = ollama.chat(
            mannequin=llm,
            instruments=[tool_search_web, tool_search_yf],
            messages=messages)

    Up so far, the chat historical past might look one thing like this:

    If the mannequin needs to make use of a Software, the suitable perform must be run with the enter parameters instructed by the LLM in its response object:

    So our code must get that data and run the Software perform.

    ## response
        dic_tools = {'search_web':search_web, 'search_yf':search_yf}
    
        if "tool_calls" in agent_res["message"].keys():
            for instrument in agent_res["message"]["tool_calls"]:
                t_name, t_inputs = instrument["function"]["name"], instrument["function"]["arguments"]
                if f := dic_tools.get(t_name):
                    ### calling instrument
                    print('🔧 >', f"x1b[1;31m{t_name} -> Inputs: {t_inputs}x1b[0m")
                    messages.append( {"role":"user", "content":"use tool '"+t_name+"' with inputs: "+str(t_inputs)} )
                    ### tool output
                    t_output = f(**tool["function"]["arguments"])
                    print(t_output)
                    ### closing res
                    p = f'''Summarize this to reply consumer query, be as concise as attainable: {t_output}'''
                    res = ollama.generate(mannequin=llm, immediate=q+". "+p)["response"]
                else:
                    print('🤬 >', f"x1b[1;31m{t_name} -> NotFoundx1b[0m")
     
        if agent_res['message']['content'] != '':
            res = agent_res["message"]["content"]
         
        print("👽 >", f"x1b[1;30m{res}x1b[0m")
        messages.append( {"role":"assistant", "content":res} )

    Now, if we run the full code, we can chat with our Agent.

    Advanced Agent (Coding)

    LLMs know how to code by being exposed to a large corpus of both code and natural language text, where they learn patterns, syntax, and semantics of Programming languages. The model learns the relationships between different parts of the code by predicting the next token in a sequence. In short, LLMs can generate Python code but can’t execute it, Agents can.

    I shall prepare a Tool allowing the Agent to execute code. In Python, you can easily create a shell to run code as a string with the native command exec().

    import io
    import contextlib
    
    def code_exec(code: str) -> str:
        output = io.StringIO()
        with contextlib.redirect_stdout(output):
            try:
                exec(code)
            except Exception as e:
                print(f"Error: {e}")
        return output.getvalue()
    
    tool_code_exec = {'type':'function', 'function':{
      'name': 'code_exec',
      'description': 'execute python code',
      'parameters': {'type': 'object',
                    'required': ['code'],
                    'properties': {
                        'code': {'sort':'str', 'description':'code to execute'},
    }}}}
    
    ## check
    code_exec("a=1+1; print(a)")

    Identical to earlier than, I’ll write a immediate, however this time, at first of the chat-loop, I’ll ask the consumer to offer a file path.

    immediate=""'You might be an skilled information scientist, and you've got instruments to execute python code.
    To begin with, execute the next code precisely as it's: 'df=pd.read_csv(path); print(df.head())'
    If you happen to create a plot, ALWAYS add 'plt.present()' on the finish.
    '''
    messages = [{"role":"system", "content":prompt}]
    begin = True
    
    whereas True:
        ## consumer enter
        strive:
            if begin is True:
                path = enter('📁 Present a CSV path >')
                q = "path = "+path
            else:
                q = enter('🙂 >')
        besides EOFError:
            break
        if q == "stop":
            break
        if q.strip() == "":
            proceed
       
        messages.append( {"function":"consumer", "content material":q} )

    Since coding duties is usually a little trickier for LLMs, I’m going so as to add additionally reminiscence reinforcement. By default, throughout one session, there isn’t a real long-term reminiscence. LLMs have entry to the chat historical past, to allow them to keep in mind data briefly, and monitor the context and directions you’ve given earlier within the dialog. Nonetheless, reminiscence doesn’t all the time work as anticipated, particularly if the LLM is small. Due to this fact, an excellent observe is to strengthen the mannequin’s reminiscence by including periodic reminders within the chat historical past.

    immediate=""'You might be an skilled information scientist, and you've got instruments to execute python code.
    To begin with, execute the next code precisely as it's: 'df=pd.read_csv(path); print(df.head())'
    If you happen to create a plot, ALWAYS add 'plt.present()' on the finish.
    '''
    messages = [{"role":"system", "content":prompt}]
    reminiscence = '''Use the dataframe 'df'.'''
    begin = True
    
    whereas True:
        ## consumer enter
        strive:
            if begin is True:
                path = enter('📁 Present a CSV path >')
                q = "path = "+path
            else:
                q = enter('🙂 >')
        besides EOFError:
            break
        if q == "stop":
            break
        if q.strip() == "":
            proceed
       
        ## reminiscence
        if begin is False:
            q = reminiscence+"n"+q
        messages.append( {"function":"consumer", "content material":q} )

    Please notice that the default reminiscence size in Ollama is 2048 characters. In case your machine can deal with it, you may improve it by altering the quantity when the LLM is invoked:

        ## mannequin
        agent_res = ollama.chat(
            mannequin=llm,
            instruments=[tool_code_exec],
            choices={"num_ctx":2048},
            messages=messages)

    On this usecase, the output of the Agent is usually code and information, so I don’t need the LLM to re-elaborate the responses.

        ## response
        dic_tools = {'code_exec':code_exec}
       
        if "tool_calls" in agent_res["message"].keys():
            for instrument in agent_res["message"]["tool_calls"]:
                t_name, t_inputs = instrument["function"]["name"], instrument["function"]["arguments"]
                if f := dic_tools.get(t_name):
                    ### calling instrument
                    print('🔧 >', f"x1b[1;31m{t_name} -> Inputs: {t_inputs}x1b[0m")
                    messages.append( {"role":"user", "content":"use tool '"+t_name+"' with inputs: "+str(t_inputs)} )
                    ### tool output
                    t_output = f(**tool["function"]["arguments"])
                    ### closing res
                    res = t_output
                else:
                    print('🤬 >', f"x1b[1;31m{t_name} -> NotFoundx1b[0m")
     
        if agent_res['message']['content'] != '':
            res = agent_res["message"]["content"]
         
        print("👽 >", f"x1b[1;30m{res}x1b[0m")
        messages.append( {"role":"assistant", "content":res} )
        start = False

    Now, if we run the full code, we can chat with our Agent.

    Conclusion

    This article has covered the foundational steps of creating Agents from scratch using only Ollama. With these building blocks in place, you are already equipped to start developing your own Agents for different use cases. 

    Stay tuned for Part 2, where we will dive deeper into more advanced examples.

    Full code for this article: GitHub

    I hope you enjoyed it! Feel free to contact me for questions and feedback or just to share your interesting projects.

    👉 Let’s Connect 👈



    Source link
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous Article5 AI Tools That Can Make Your Travels Super Easy | by Nitin choudhary | Feb, 2025
    Next Article Money Tip From Founder Helping College Athletes Manage Billions
    Team_AIBS News
    • Website

    Related Posts

    Artificial Intelligence

    Revisiting Benchmarking of Tabular Reinforcement Learning Methods

    July 2, 2025
    Artificial Intelligence

    An Introduction to Remote Model Context Protocol Servers

    July 2, 2025
    Artificial Intelligence

    How to Access NASA’s Climate Data — And How It’s Powering the Fight Against Climate Change Pt. 1

    July 1, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    Revisiting Benchmarking of Tabular Reinforcement Learning Methods

    July 2, 2025

    I Tried Buying a Car Through Amazon: Here Are the Pros, Cons

    December 10, 2024

    Amazon and eBay to pay ‘fair share’ for e-waste recycling

    December 10, 2024

    Artificial Intelligence Concerns & Predictions For 2025

    December 10, 2024

    Barbara Corcoran: Entrepreneurs Must ‘Embrace Change’

    December 10, 2024
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    Most Popular

    BBC threatens AI firm with legal action over unauthorised content use

    June 20, 2025

    Industrial Computed Tomography (CT) scanning catches hidden defects traditional methods miss

    May 6, 2025

    Xbox finally reveals handheld console after decade of speculation

    June 9, 2025
    Our Picks

    Revisiting Benchmarking of Tabular Reinforcement Learning Methods

    July 2, 2025

    Is Your AI Whispering Secrets? How Scientists Are Teaching Chatbots to Forget Dangerous Tricks | by Andreas Maier | Jul, 2025

    July 2, 2025

    Qantas data breach to impact 6 million airline customers

    July 2, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2024 Aibsnews.comAll Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.