Inhoud

Google Search

🗂️ Terug naar start
⚙️🗂️ Google Start

Aangepaste Zoek widget Google

Doorzoekt kennisbank, catcollectief.nl en catvergoedbaar.nl:
Programeerbare zoekmachine
CAT zoekmachine 🔍
API KEY aanmaken

API aangepaste Google zoekmachine

1️⃣ Custom Search JSON API: Introduction
2️⃣ Creating a Programmable Search Engine
3️⃣ Wat is Programmeerbare zoekmachine? documentatie/uitleg
4️⃣ Getting started with Programmable Search Engine Update sites in your search engine


Ideale zoekmachine

Het idee:
Het idee voor een ideale zoekmachine voor een bepaald onderwerp of bedrijf zou volgens mij als volgt werken:
1️⃣ Een gebruiker stelt een vraag in Natuurlijke Taal
2️⃣ Een LLM maakt een geschikte zoekterm van de opgegeven tekst
3️⃣ Een geoptimaliseerde zoekmachine doorzoekt van te voren opgegeven websites (URL's) en geeft als resultaat een URL
4️⃣ De content van de opgegeven URL wordt met een web-scraper binnengehaald
5️⃣ De opgehaalde tekst wordt samen met de tekst van de originele vraag naar een LLM gestuurd
6️⃣ De LLM heelt het antwoord uit de meegestuurde tekst en formuleert daarmee een antwoord op de vraag.

Tools:
Google Programmeerbare zoekmachine
Serper (The World's Fastest & Cheapest Google Search API)
API KEY aanmaken

Informatie bron:
GitHub: Custom WebSearch Agent with LangGraph
Het (soort van) idee in Video Tutorial
Video: 16:10: serper_tool en scraper_tool
GitHub google_serper.py
Video: 25:00: Basis scraper tool
GitHub basic_scraper.py (BeautifulSoup)

💎 Het idee is dat de hierboven besproken “ideale zoekmachine” met de hierboven genoemde bronnen (als onderdelen) gebouwd zou kunnen worden. Wordt (mogelijk) vervolgd…

Tavily:
💡 NOTE: Naast Google is er ook nog Tavily Search. Een zoekmachine die is aangepast voor gebruik met AI en die misschien nog wel beter geschikt is voor eerder beschreven oplossing.
TavilySearchAPIRetriever Me URL's include

Vervolg... Video met uitgebreid gebruik van diverse manieren om online data te gebruiken….


Gebruik van GoogleSearchAPIWrapper

Google Search documentatie

Hieronder een voorbeeld van gebruik van de Google Search API m.b.v. “GoogleSearchAPIWrapper”. Met deze methode kun je eigen websites doorzoeken door gebruik te maken van de programmeerbarezoekmachine.

Maak hier een programmeerbare zoekmachine aan
🔸Voer de URL's in die je wil gebruiken om zoekresultaten te krijgen.
🔸Noteer de “Zoekmachine-ID” deze heb je in de applicatie nodig als “GOOGLE_CSE_ID”
🔸Je hebt ook een Google API-KEY nodig om op te geven als “GOOGLE_API_KEY”

Onderstaande Class:
🔸 Doorzoekt de opgegeven URL's
🔸 Geeft de 5 eerste resultaten terug
🔸 Maakt een View aan in Markdown om weer te geven in de Streamlit applicatie

pip install langchain-google-community
import streamlit as st
import os
from langchain_core.tools import Tool
from langchain_google_community import GoogleSearchAPIWrapper


class Zoeken:
    def __init__(self):
        os.environ["GOOGLE_CSE_ID"] = st.secrets["GOOGLE_CSE_ID"]
        os.environ["GOOGLE_API_KEY"] = st.secrets["GOOGLE_API_KEY"]

        self.search = GoogleSearchAPIWrapper()
        self.tool = Tool(
            name="google_search",
            description="Search Google voor top 5 resultaten",
            func=self.top5_results,
        )


    def pageIni(self):
        self.buildView()    


    def buildView(self):
        coll1, coll2, coll3 = st.columns([1, 2, 1])
        with coll2:
            st.subheader("🔍 Zoeken")
            user_query = st.chat_input(placeholder="Type hier je zoekterm(en)...")
            if user_query is not None and user_query != "":
                antw = self.tool.run(user_query)
                antw = self.resulltaatOpschonen(antw, user_query)
                st.markdown(antw, unsafe_allow_html=True)
                #st.info(antw)


    # WERKERS =======================================

    def top5_results(self, query):
        return self.search.results(query, 5)
    

    def resulltaatOpschonen(self, resultaten, user_query):
        view = f'🕵️ **{user_query}**\n\n---\n\n'
        for result in resultaten:
            try:
                if result['Result'] == 'No good Google Search Result was found':
                    view += "**⚠️ :red[Geen goede Zoekresultaten gevonden]**"
                else:
                    view += f"🔹 **[{result['title']}]({result['link']})** :green[*{result['snippet']}*]\n\n---\n\n"
            except KeyError:
                view += f"🔹 **[{result['title']}]({result['link']})** :green[*{result['snippet']}*]\n\n---\n\n"
        return view
           
            
start = Zoeken()
start.pageIni()

💭 Ik denk er over om deze zoekmethode ook in te bouwen in de CATviseur (versie 2.0). Om naast het antwoord van CATja ook de eerste 5 zoekresultaten van deze methode te tonen… Nadat de vraag van de gebruiker is aangepast en er een geschikte zoekopdracht van is gemaakt door een LLM…