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
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…