Close Menu
    Main Menu
    • Home
    • News
    • Tech
    • Robotics
    • ML & Research
    • AI
    • Digital Transformation
    • AI Ethics & Regulation
    • Thought Leadership in AI

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    You must flip off this default TV setting ASAP – and why even consultants advocate it

    July 29, 2025

    Prime Abilities Information Scientists Ought to Study in 2025

    July 29, 2025

    Apera AI closes Sequence A financing, updates imaginative and prescient software program, names executives

    July 29, 2025
    Facebook X (Twitter) Instagram
    UK Tech InsiderUK Tech Insider
    Facebook X (Twitter) Instagram
    UK Tech InsiderUK Tech Insider
    Home»Machine Learning & Research»Utilizing Generative AI to Construct Generative AI – O’Reilly
    Machine Learning & Research

    Utilizing Generative AI to Construct Generative AI – O’Reilly

    Idris AdebayoBy Idris AdebayoApril 21, 2025No Comments23 Mins Read
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr Email Reddit
    Utilizing Generative AI to Construct Generative AI – O’Reilly
    Share
    Facebook Twitter LinkedIn Pinterest Email Copy Link


    On Might 8, O’Reilly Media will likely be internet hosting Coding with AI: The Finish of Software program Growth as We Know It—a dwell digital tech convention spotlighting how AI is already supercharging builders, boosting productiveness, and offering actual worth to their organizations. If you happen to’re within the trenches constructing tomorrow’s improvement practices at the moment and thinking about talking on the occasion, we’d love to listen to from you by March 12. You will discover extra data and our name for displays right here. Simply need to attend? Register at no cost right here.


    Hello, I’m a professor of cognitive science and design at UC San Diego, and I lately wrote posts on Radar about my experiences coding with and chatting with generative AI instruments like ChatGPT. On this publish I need to discuss utilizing generative AI to increase one in every of my educational software program initiatives—the Python Tutor instrument for studying programming—with an AI chat tutor. We regularly hear about GenAI being utilized in large-scale business settings, however we don’t hear almost as a lot about smaller-scale not-for-profit initiatives. Thus, this publish serves as a case research of including generative AI into a private mission the place I didn’t have a lot time, assets, or experience at my disposal. Engaged on this mission received me actually enthusiastic about being right here at this second proper as highly effective GenAI instruments are beginning to turn out to be extra accessible to nonexperts like myself.




    Study quicker. Dig deeper. See farther.

    For some context, over the previous 15 years I’ve been working Python Tutor (https://pythontutor.com/), a free on-line instrument that tens of thousands and thousands of individuals around the globe have used to write down, run, and visually debug their code (first in Python and now additionally in Java, C, C++, and JavaScript). Python Tutor is especially utilized by college students to know and debug their homework project code step-by-step by seeing its name stack and information constructions. Consider it as a digital teacher who attracts diagrams to indicate runtime state on a whiteboard. It’s greatest suited to small items of self-contained code that college students generally encounter in pc science lessons or on-line coding tutorials.

    Right here’s an instance of utilizing Python Tutor to step by means of a recursive perform that builds up a linked listing of Python tuples. On the present step, the visualization reveals two recursive calls to the listSum perform and varied tips that could listing nodes. You possibly can transfer the slider ahead and backward to see how this code runs step-by-step:

    AI Chat for Python Tutor’s Code Visualizer

    Means again in 2009 after I was a grad scholar, I envisioned creating Python Tutor to be an automatic tutor that would assist college students with programming questions (which is why I selected that mission title). However the issue was that AI wasn’t almost ok again then to emulate a human tutor. Some AI researchers had been publishing papers within the area of clever tutoring programs, however there have been no broadly accessible software program libraries or APIs that could possibly be used to make an AI tutor. So as a substitute I spent all these years engaged on a flexible code visualizer that could possibly be *used* by human tutors to clarify code execution.

    Quick-forward 15 years to 2024, and generative AI instruments like ChatGPT, Claude, and lots of others primarily based on LLMs (giant language fashions) are actually actually good at holding human-level conversations, particularly about technical subjects associated to programming. Particularly, they’re nice at producing and explaining small items of self-contained code (e.g., beneath 100 strains), which is precisely the goal use case for Python Tutor. So with this expertise in hand, I used these LLMs so as to add AI-based chat to Python Tutor. Right here’s a fast demo of what it does.

    First I designed the person interface to be so simple as doable. It’s only a chat field under the person’s code and visualization:

    There’s a dropdown menu of templates to get you began, however you may kind in any query you need. Once you click on “Ship,” the AI tutor will ship your code, present visualization state (e.g., name stack and information constructions), terminal textual content output, and query to an LLM, which is able to reply right here with one thing like:

    Notice how the LLM can “see” your present code and visualization, so it may possibly clarify to you what’s happening right here. This emulates what an professional human tutor would say. You possibly can then proceed chatting back-and-forth such as you would with a human.

    Along with explaining code, one other widespread use case for this AI tutor helps college students get unstuck once they encounter a compiler or runtime error, which will be very irritating for newcomers. Right here’s an index out-of-bounds error in Python:

    At any time when there’s an error, the instrument robotically populates your chat field with “Assist me repair this error,” however you may choose a special query from the dropdown (proven expanded above). Once you hit “Ship” right here, the AI tutor responds with one thing like:

    Notice that when the AI generates code examples, there’s a “Visualize Me” button beneath each so to immediately visualize it in Python Tutor. This lets you visually step by means of its execution and ask the AI follow-up questions on it.

    In addition to asking particular questions on your code, it’s also possible to ask basic programming questions and even career-related questions like the way to put together for a technical coding interview. As an illustration:

    … and it’ll generate code examples you can visualize with out leaving the Python Tutor web site.

    Advantages over Immediately Utilizing ChatGPT

    The apparent query right here is: What are the advantages of utilizing AI chat inside Python Tutor relatively than pasting your code and query into ChatGPT? I feel there are just a few primary advantages, particularly for Python Tutor’s target market of newcomers who’re simply beginning to be taught to code:

    1) Comfort – Hundreds of thousands of scholars are already writing, compiling, working, and visually debugging code inside Python Tutor, so it feels very pure for them to additionally ask questions with out leaving the positioning. If as a substitute they should choose their code from a textual content editor or IDE, copy it into one other website like ChatGPT, after which possibly additionally copy their error message, terminal output, and describe what’s going on at runtime (e.g., values of knowledge constructions), that’s far more cumbersome of a person expertise. Some fashionable IDEs do have AI chat inbuilt, however these require experience to arrange since they’re meant for skilled software program builders. In distinction, the principle attraction of Python Tutor for newcomers has all the time been its ease of entry: Anybody can go to pythontutor.com and begin coding straight away with out putting in software program or making a person account.

    2) Newbie-friendly LLM prompts – Subsequent, even when somebody had been to undergo the difficulty of copy-pasting their code, error message, terminal output, and runtime state into ChatGPT, I’ve discovered that newcomers aren’t good at arising with prompts (i.e., written directions) that direct LLMs to provide simply comprehensible responses. Python Tutor’s AI chat addresses this downside by augmenting chats with a system immediate like the next to emphasise directness, conciseness, and beginner-friendliness:

    You might be an professional programming instructor and I’m a scholar asking you for assist with ${LANGUAGE}.
    – Be concise and direct. Preserve your response beneath 300 phrases if doable.
    – Write on the degree {that a} newbie scholar in an introductory programming class can perceive.
    – If it’s worthwhile to edit my code, make as few modifications as wanted and protect as a lot of my unique code as doable. Add code feedback to clarify your modifications.
    – Any code you write needs to be self-contained and runnable with out importing exterior libraries.
    – Use GitHub Flavored Markdown.

    It additionally codecs the person’s code, error message, related line numbers, and runtime state in a well-structured manner for LLMs to ingest. Lastly, it offers a dropdown menu of widespread questions and requests like “What does this error message imply?” and “Clarify what this code does line-by-line.” so newcomers can begin crafting a query straight away with out observing a clean chat field. All of this behind-the-scenes immediate templating helps customers to keep away from widespread issues with immediately utilizing ChatGPT, such because it producing explanations which can be too wordy, jargon-filled, and overwhelming for newcomers.

    3) Operating your code as a substitute of simply “trying” at it – Lastly, should you paste your code and query into ChatGPT, it “inspects” your code by studying over it like a human tutor would do. However it doesn’t really run your code so it doesn’t know what perform calls, variables, and information constructions actually exist throughout execution. Whereas fashionable LLMs are good at guessing what code does by “trying” at it, there’s no substitute for working code on an actual pc. In distinction, Python Tutor runs your code in order that whenever you ask AI chat about what’s happening, it sends the actual values of the decision stack, information constructions, and terminal output to the LLM, which once more hopefully leads to extra useful responses.

    Utilizing Generative AI to Construct Generative AI

    Now that you just’ve seen how Python Tutor’s AI chat works, you may be questioning: Did I take advantage of generative AI to assist me construct this GenAI function? Sure and no. GenAI helped me most after I was getting began, however as I received deeper in I discovered much less of a use for it.

    Utilizing Generative AI to Create a Mock-Up Person Interface

    My strategy was to first construct a stand-alone web-based LLM chat app and later combine it into Python Tutor’s codebase. In November 2024, I purchased a Claude Professional subscription since I heard good buzz about its code technology capabilities. I started by working with Claude to generate a mock-up person interface for an LLM chat app with acquainted options like a person enter field, textual content bubbles for each the LLM and human person’s chats, HTML formatting with Markdown, syntax-highlighted code blocks, and streaming the LLM’s response incrementally relatively than making the person wait till it completed. None of this was revolutionary—it’s what everybody expects from utilizing an LLM chat interface like ChatGPT.

    I favored working with Claude to construct this mock-up as a result of it generated dwell runnable variations of HTML, CSS, and JavaScript code so I may work together with it within the browser with out copying the code into my very own mission. (Simon Willison wrote a nice publish on this Claude Artifacts function.) Nonetheless, the principle draw back is that at any time when I request even a small code tweak, it might take as much as a minute or so to regenerate all of the mission code (and generally annoyingly depart components as incomplete […] segments, which made the code not run). If I had as a substitute used an AI-powered IDE like Cursor or Windsurf, then I’d’ve been capable of ask for fast incremental edits. However I didn’t need to trouble establishing extra complicated tooling, and Claude was ok for getting my internet frontend began.

    A False Begin by Regionally Internet hosting an LLM

    Now onto the backend. I initially began this mission after enjoying with Ollama on my laptop computer, which is an app that allowed me to run LLMs regionally at no cost with out having to pay a cloud supplier. Just a few months earlier (September 2024) Llama 3.2 had come out, which featured smaller fashions like 1B and 3B (1 and three billion parameters, respectively). These are a lot much less highly effective than state-of-the-art fashions, that are 100 to 1,000 instances larger on the time of writing. I had no hope of working bigger fashions regionally (e.g., Llama 405B), however these smaller 1B and 3B fashions ran wonderful on my laptop computer in order that they appeared promising.

    Notice that the final time I attempted working an LLM regionally was GPT-2 (sure, 2!) again in 2021, and it was TERRIBLE—a ache to arrange by putting in a bunch of Python dependencies, tremendous sluggish to run, and producing nonsensical outcomes. So for years I didn’t suppose it was possible to self-host my very own LLM for Python Tutor. And I didn’t need to pay to make use of a cloud API like ChatGPT or Claude since Python Tutor is a not-for-profit mission on a shoestring funds; I couldn’t afford to offer a free AI tutor for over 10,000 every day energetic customers whereas consuming all of the costly API prices myself.

    However now, three years later, the mix of smaller LLMs and Ollama’s ease-of-use satisfied me that the time was proper for me to self-host my very own LLM for Python Tutor. So I used Claude and ChatGPT to assist me write some boilerplate code to attach my prototype internet chat frontend with a Node.js backend that referred to as Ollama to run Llama 1B/3B regionally. As soon as I received that demo engaged on my laptop computer, my objective was to host it on just a few college Linux servers that I had entry to.

    However barely one week in, I received dangerous information that ended up being an enormous blessing in disguise. Our college IT of us instructed me that I wouldn’t be capable of entry the few Linux servers with sufficient CPUs and RAM wanted to run Ollama, so I needed to scrap my preliminary plans for self-hosting. Notice that the sort of low-cost server I wished to deploy on didn’t have GPUs, in order that they ran Ollama rather more slowly on their CPUs. However in my preliminary exams a small mannequin like Llama 3.2 3B nonetheless ran okay for just a few concurrent requests, producing a response inside 45 seconds for as much as 4 concurrent customers. This isn’t “good” by any measure, however it’s the most effective I may do with out paying for a cloud LLM API, which I used to be afraid to do given Python Tutor’s sizable userbase and tiny funds. I figured if I had, say 4 reproduction servers, then I may serve as much as 16 concurrent customers inside 45 seconds, or possibly 8 concurrents inside 20 seconds (tough estimates). That wouldn’t be the most effective person expertise, however once more Python Tutor is free for customers, so their expectations can’t be sky-high. My plan was to write down my very own load-balancing code to direct incoming requests to the lowest-load server and queuing code so if there have been extra concurrent customers attempting to attach than a server had capability for, it might queue them as much as keep away from crashes. Then I would wish to write down all of the sysadmin/DevOps code to watch these servers, maintain them up-to-date, and reboot in the event that they failed. This was all a frightening prospect to code up and take a look at robustly, particularly as a result of I’m not an expert software program developer. However to my aid, now I didn’t should do any of that grind because the college server plan was a no-go.

    Switching to the OpenRouter Cloud API

    So what did I find yourself utilizing as a substitute? Serendipitously, round this time somebody pointed me to OpenRouter, which is an API that permits me to write down code as soon as and entry quite a lot of paid LLMs by merely altering the LLM title in a configuration string. I signed up, received an API key, and began making queries to Llama 3B within the cloud inside minutes. I used to be shocked by how simple this code was to arrange! So I rapidly wrapped it in a server backend that streams the LLM’s response textual content in actual time to my frontend utilizing SSE (server-sent occasions), which shows it within the mock-up chat UI. Right here’s the essence of my Python backend code:

    import openai # OpenRouter makes use of the OpenAI API
    shopper = openai.OpenAI(
        base_url="https://openrouter.ai/api/v1",
        api_key=
    )

    completion = shopper.chat.completions.create(
        mannequin=,
        messages=,
        stream=True
    )
    for chunk in completion:
        textual content = chunk.decisions[0].delta.content material
        

    OpenRouter does value cash, however I used to be keen to offer it a shot because the costs for Llama 3B appeared extra cheap than state-of-the-art fashions like ChatGPT or Claude. On the time of writing, 3B is about $0.04 USD per million tokens, and a state-of-the-art LLM prices as much as 500x as a lot (ChatGPT-4o is $20 and Claude 3.7 Sonnet is $18). I’d be scared to make use of ChatGPT or Claude at these costs, however I felt snug with the less expensive Llama 3B. What additionally gave me consolation was figuring out I wouldn’t get up with an enormous invoice if there have been a sudden spike in utilization; OpenRouter lets me put in a hard and fast amount of cash, and if that runs out my API calls merely fail relatively than charging my bank card extra.

    For some additional peace of thoughts I carried out my very own charge limits: 1) Every person’s enter and complete chat conversations are restricted to a sure size to maintain prices beneath management (and to cut back hallucinations since smaller LLMs are likely to go “off the rails” as conversations develop longer); 2) Every person can ship just one chat per minute, which once more prevents overuse. Hopefully this isn’t a giant downside for Python Tutor customers since they want no less than a minute to learn the LLM’s response, check out recommended code fixes, then ask a follow-up query.

    Utilizing OpenRouter’s cloud API relatively than self-hosting on my college’s servers turned out to be so significantly better since: 1) Python Tutor customers can get responses inside only some seconds relatively than ready 30-45 seconds; 2) I didn’t have to do any sysadmin/DevOps work to keep up my servers, or to write down my very own load balancing or queuing code to interface with Ollama; 3) I can simply strive totally different LLMs by altering a configuration string.

    GenAI as a Thought Accomplice and On-Demand Trainer

    After getting the “glad path” working (i.e., when OpenRouter API calls succeed), I spent a bunch of time occupied with error situations and ensuring my code dealt with them nicely since I wished to offer a great person expertise. Right here I used ChatGPT and Claude as a thought companion by having GenAI assist me provide you with edge instances that I hadn’t initially thought of. I then created a debugging UI panel with a dozen buttons under the chat field that I may press to simulate particular errors with a purpose to take a look at how nicely my app dealt with these instances:

    After getting my stand-alone LLM chat app working robustly on error instances, it was time to combine it into the principle Python Tutor codebase. This course of took loads of time and elbow grease, however it was simple since I made certain to have my stand-alone app use the identical variations of older JavaScript libraries that Python Tutor was utilizing. This meant that firstly of my mission I needed to instruct Claude to generate mock-up frontend code utilizing these older libraries; in any other case by default it might use fashionable JavaScript frameworks like React or Svelte that may not combine nicely with Python Tutor, which is written utilizing 2010-era jQuery and associates.

    At this level I discovered myself probably not utilizing generative AI day-to-day since I used to be working inside the consolation zone of my very own codebase. GenAI was helpful firstly to assist me determine the “unknown unknowns.” However now that the issue was well-scoped I felt rather more snug writing each line of code myself. My every day grind from this level onward concerned loads of UI/UX sprucing to make a easy person expertise. And I discovered it simpler to immediately write code relatively than take into consideration the way to instruct GenAI to code it for me. Additionally, I wished to know each line of code that went into my codebase since I knew that each line would should be maintained maybe years into the longer term. So even when I may have used GenAI to code quicker within the quick time period, which will come again to hang-out me later within the type of delicate bugs that come up as a result of I didn’t totally perceive the implications of AI-generated code.

    That stated, I nonetheless discovered GenAI helpful as a alternative for Google or Stack Overflow types of questions like “How do I write X in fashionable JavaScript?” It’s an unimaginable useful resource for studying technical particulars on the fly, and I generally tailored the instance code in AI responses into my codebase. However no less than for this mission, I didn’t really feel snug having GenAI “do the driving” by producing giant swaths of code that I’d copy-paste verbatim.

    Ending Touches and Launching

    I wished to launch by the brand new 12 months, in order November rolled into December I used to be making regular progress getting the person expertise extra polished. There have been one million little particulars to work by means of, however that’s the case with any nontrivial software program mission. I didn’t have the assets to guage how nicely smaller LLMs carry out on actual questions that customers would possibly ask on the Python Tutor web site, however from casual testing I used to be dismayed (however not shocked) at how typically the 1B and 3B fashions produced incorrect explanations. I attempted upgrading to a Llama 8B mannequin, and it was nonetheless not wonderful. I held out hope that tweaking my system immediate would enhance efficiency. I didn’t spend a ton of time on it, however my preliminary impression was that no quantity of tweaking may make up for the truth that a smaller mannequin is simply much less succesful—like a canine mind in comparison with a human mind.

    Fortuitously in late December—solely two weeks earlier than launch—Meta launched a new Llama 3.3 70B mannequin. I used to be working out of time, so I took the straightforward manner out and switched my OpenRouter configuration to make use of it. My AI Tutor’s responses immediately received higher and made fewer errors, even with my unique system immediate. I used to be nervous concerning the 10x worth improve from 3B to 70B ($0.04 to $0.42 per million tokens) however gave it a shot anyhow.

    Parting Ideas and Classes Realized

    Quick-forward to the current. It’s been two months since launch, and prices are cheap to this point. With my strict charge limits in place Python Tutor customers are making round 2,000 LLM queries per day, which prices lower than a greenback every day utilizing Llama 3.3 70B. And I’m hopeful that I can change to extra highly effective fashions as their costs drop over time. In sum, it’s tremendous satisfying to see this AI chat function dwell on the positioning after dreaming about it for nearly 15 years since I first created Python Tutor way back. I really like how cloud APIs and low-cost LLMs have made generative AI accessible to nonexperts like myself.

    Listed below are some takeaways for individuals who need to play with GenAI of their private apps:

    • I extremely suggest utilizing a cloud API supplier like OpenRouter relatively than self-hosting LLMs by yourself VMs or (even worse) shopping for a bodily machine with GPUs. It’s infinitely cheaper and extra handy to make use of the cloud right here, particularly for personal-scale initiatives. Even with hundreds of queries per day, Python Tutor’s AI prices are tiny in comparison with paying for VMs or bodily machines.
    • Ready helped! It’s good to not be on the bleeding edge on a regular basis. If I had tried to do that mission in 2021 through the early days of the OpenAI GPT-3 API like early adopters did, I’d’ve confronted loads of ache working round tough edges in fast-changing APIs; easy-to-use instruction-tuned chat fashions didn’t even exist again then! Additionally, there wouldn’t be any on-line docs or tutorials about greatest practices, and (very meta!) LLMs again then wouldn’t know the way to assist me code utilizing these APIs because the crucial docs weren’t out there for them to coach on. By merely ready just a few years, I used to be capable of work with high-quality secure cloud APIs and get helpful technical assist from Claude and ChatGPT whereas coding my app.
    • It’s enjoyable to play with LLM APIs relatively than utilizing the net interfaces like most individuals do. By writing code with these APIs you may intuitively “really feel” what works nicely and what doesn’t. And since these are atypical internet APIs, you may combine them into initiatives written in any programming language that your mission is already utilizing.
    • I’ve discovered {that a} quick, direct, and easy system immediate with a bigger LLM will beat elaborate system prompts with a smaller LLM. Shorter system prompts additionally imply that every question prices you much less cash (since they have to be included within the question).
    • Don’t fear about evaluating output high quality should you don’t have assets to take action. Provide you with just a few handcrafted exams and run them as you’re growing—in my case it was tough items of code that I wished to ask Python Tutor’s AI chat to assist me repair. If you happen to stress an excessive amount of about optimizing LLM efficiency, then you definitely’ll by no means ship something! And if you end up craving for higher high quality, improve to a bigger LLM first relatively than tediously tweaking your immediate.
    • It’s very arduous to estimate how a lot working an LLM will value in manufacturing since prices are calculated per million enter/output tokens, which isn’t intuitive to cause about. The easiest way to estimate is to run some take a look at queries, get a way of how wordy the LLM’s responses are, then have a look at your account dashboard to see how a lot every question value you. As an illustration, does a typical question value 1/10 cent, 1 cent, or a number of cents? No approach to discover out except you strive. My hunch is that it most likely prices lower than you think about, and you may all the time implement charge limiting or change to a lower-cost mannequin later if value turns into a priority.
    • Associated to above, should you’re making a prototype or one thing the place solely a small variety of individuals will use it at first, then positively use the most effective state-of-the-art LLM to indicate off essentially the most spectacular outcomes. Value doesn’t matter a lot because you received’t be issuing that many queries. But when your app has a good variety of customers like Python Tutor does, then decide a smaller mannequin that also performs nicely for its worth. For me it looks as if Llama 3.3 70B strikes that stability in early 2025. However as new fashions come onto the scene, I’ll reevaluate these price-to-performance trade-offs.



    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Idris Adebayo
    • Website

    Related Posts

    Prime Abilities Information Scientists Ought to Study in 2025

    July 29, 2025

    mRAKL: Multilingual Retrieval-Augmented Information Graph Building for Low-Resourced Languages

    July 28, 2025

    How Uber Makes use of ML for Demand Prediction?

    July 28, 2025
    Top Posts

    You must flip off this default TV setting ASAP – and why even consultants advocate it

    July 29, 2025

    Evaluating the Finest AI Video Mills for Social Media

    April 18, 2025

    Utilizing AI To Repair The Innovation Drawback: The Three Step Resolution

    April 18, 2025

    Midjourney V7: Quicker, smarter, extra reasonable

    April 18, 2025
    Don't Miss

    You must flip off this default TV setting ASAP – and why even consultants advocate it

    By Sophia Ahmed WilsonJuly 29, 2025

    Kerry Wan/ZDNETFor many individuals, movement smoothing on TVs is barely acceptable for gaming and watching…

    Prime Abilities Information Scientists Ought to Study in 2025

    July 29, 2025

    Apera AI closes Sequence A financing, updates imaginative and prescient software program, names executives

    July 29, 2025

    Unfiltered AI Video Generator from Textual content: Prime Instruments

    July 28, 2025
    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    UK Tech Insider
    Facebook X (Twitter) Instagram
    • About Us
    • Contact Us
    • Privacy Policy
    • Terms Of Service
    • Our Authors
    © 2025 UK Tech Insider. All rights reserved by UK Tech Insider.

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