====== Google Search ======
🗂️ [[start|Terug naar start]]\\
⚙️🗂️ [[google|Google Start]]
===== Aangepaste Zoek widget Google =====
**Doorzoekt kennisbank, catcollectief.nl en catvergoedbaar.nl:**\\
**[[https://programmablesearchengine.google.com/controlpanel/all|Programeerbare zoekmachine]]** ✨\\
**[[https://cse.google.com/cse?cx=16228beed794d429b#gsc.tab=0|CAT zoekmachine]]** 🔍\\
**[[https://console.cloud.google.com/apis/credentials|API KEY aanmaken]] ✨**
===== API aangepaste Google zoekmachine =====
1️⃣ **[[https://developers.google.com/custom-search/v1/introduction|Custom Search JSON API: Introduction]]** ✨\\
2️⃣ **[[https://developers.google.com/custom-search/docs/tutorial/creatingcse|Creating a Programmable Search Engine]]** ✨\\
3️⃣ **[[https://support.google.com/programmable-search/answer/4513751?hl=nl|Wat is Programmeerbare zoekmachine? documentatie/uitleg]]**✨\\
4️⃣ **[[https://support.google.com/programmable-search/answer/12397162|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 [[https://programmablesearchengine.google.com/controlpanel/all|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 [[https://realpython.com/beautiful-soup-web-scraper-python/|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:**\\
[[https://programmablesearchengine.google.com/controlpanel/all|Google Programmeerbare zoekmachine]]\\
[[https://serper.dev/|Serper (The World's Fastest & Cheapest Google Search API)]]\\
[[https://console.cloud.google.com/apis/credentials|API KEY aanmaken]]
**Informatie bron:**\\
[[https://github.com/john-adeojo/graph_websearch_agent|GitHub: Custom WebSearch Agent with LangGraph]]\\
[[https://www.youtube.com/watch?v=R-o_a6dvzQM|Het (soort van) idee in Video Tutorial]]\\
[[https://www.youtube.com/watch?v=R-o_a6dvzQM|Video: 16:10: serper_tool en scraper_tool]]\\
[[https://github.com/john-adeojo/graph_websearch_agent/blob/main/tools/google_serper.py|GitHub google_serper.py]]\\
[[https://www.youtube.com/watch?v=R-o_a6dvzQM|Video: 25:00: Basis scraper tool]]\\
[[https://github.com/john-adeojo/graph_websearch_agent/blob/main/tools/basic_scraper.py|GitHub basic_scraper.py (BeautifulSoup)]]
💎 Het idee is dat de hierboven besproken "[[#ideale_zoekmachine|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|Tavily Search]]. Een zoekmachine die is aangepast voor gebruik met AI en die misschien nog wel beter geschikt is voor eerder beschreven oplossing.\\
[[https://python.langchain.com/api_reference/community/retrievers/langchain_community.retrievers.tavily_search_api.TavilySearchAPIRetriever.html#|TavilySearchAPIRetriever]] Me URL's include
**[[https://www.youtube.com/watch?v=UlKxDHqON5s|Vervolg...]]✨** Video met uitgebreid gebruik van diverse manieren om online data te gebruiken....
----
===== Gebruik van GoogleSearchAPIWrapper =====
**[[https://python.langchain.com/docs/integrations/tools/google_search/|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 [[https://developers.google.com/custom-search/docs/tutorial/creatingcse|programmeerbarezoekmachine]].
[[https://developers.google.com/custom-search/docs/tutorial/creatingcse|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 [[https://console.cloud.google.com/apis/credentials|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 [[https://www.markdownguide.org/cheat-sheet/|Markdown]] om weer te geven in de [[steamlit_home|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 [[start#de_catviseur|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...
----