Gebruikershulpmiddelen

Site-hulpmiddelen


tavily

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisieVorige revisie
Volgende revisie
Vorige revisie
tavily [2024/10/01 20:59] โ€“ [Links] a3dijketavily [2024/10/13 22:26] (huidige) โ€“ [Tavily doorzoekt opgegeven websites] a3dijke
Regel 30: Regel 30:
  
 ---- ----
 +
 +===== Voorbeeld gebruik Tavily =====
 +Hieronder een Python Class met 4 verschillende manieren om Tavily search te gebruiken in Python. Tavily is niet gratis maar er is wel een gratis account waarbij je 1000 verzoeken per maand kunt doen. Dit zou genoeg moeten zijn om te testen. Je hebt een Tavily Api-key nodig:
 +
 +[[https://app.tavily.com/home|Maak hier je API-Key aan]]
 +
 +Installeer Tavily voor Python //(De integratie leeft in het langchain-community pakket. Maar we moeten ook het tavily-python pakket installeren.)//
 +
 +<code>pip install langchain-community</code>
 +<code>pip install tavily-python</code>
 +
 +๐Ÿ”ธ Boven iedere functie //(methode)// is in het commentaar te vinden waar de bron te vinden is //(URL)// met meer informatie over de gebruikte methode\\
 +๐Ÿ”ธ De "tavilyKaal" methode is de basis methode om Tavily te gebruiken in Python zonder toeters en bellen\\
 +๐Ÿ”ธ De "tavilyLangChainNoChain" methode gebruikt Tavilt in de vorm van een retriever zonder daar verder iets mee te doen\\
 +๐Ÿ”ธ De "tavilyLangChainWithChain" methode is hetzelfde als de "tavilyLangChainNoChain" maar in een chain en deze methode genereerd een antwoord met behulp van een LLM\\
 +๐Ÿ”ธ De "tavilyLangChainNoChain" methode steld Tavily als Tool in. Dit is de basis versie welke nog verder uitgewerkt [[https://python.langchain.com/docs/integrations/tools/tavily_search/|is/wordt op deze pagina]]
 +
 +๐Ÿ’ก **Note:** bij zowel de "TavilySearchAPIRetriever" als bij de "TavilySearchResults" methode kunnen URL's worden opgegeven die doorzocht dienen te worden d.m.v. de "include_domains" parameter
 +
 +<code>from tavily import TavilyClient
 +from langchain_community.retrievers import TavilySearchAPIRetriever
 +from langchain_community.tools.tavily_search import TavilySearchResults
 +from langchain_core.output_parsers import StrOutputParser
 +from langchain_core.prompts import ChatPromptTemplate
 +from langchain_core.runnables import RunnablePassthrough
 +from langchain_openai import ChatOpenAI
 +import os
 +
 +
 +# test diverse zoekmethoden
 +class Test_2:
 +    def __init__(self):
 +       os.environ["TAVILY_API_KEY"] = st.secrets["TAVILY_API_KEY"]
 +
 +    #https://docs.tavily.com/docs/python-sdk/tavily-search/examples
 +    def tavilyKaal(self, user_query):   
 +        client = TavilyClient()    
 +        antw = client.search(user_query)
 +        return antw
 +
 +    # TavilySearchAPIRetriever =======================================
 +
 +    # https://python.langchain.com/docs/integrations/retrievers/tavily/
 +    def tavilyLangChainNoChain(self, user_query):       
 +        retriever = TavilySearchAPIRetriever(k=3)
 +        antw = retriever.invoke(user_query)
 +
 +        return antw
 +
 +    # https://python.langchain.com/docs/integrations/retrievers/tavily/
 +    def tavilyLangChainWithChain(self, user_query):       
 +        retriever = TavilySearchAPIRetriever(k=3)
 +        prompt = ChatPromptTemplate.from_template(
 +            """Beantwoord de vraag alleen op basis van de gegeven context.
 +
 +        Context: {context}
 +
 +        Question: {question}"""
 +        )
 +        llm = ChatOpenAI(model="gpt-4o-mini")
 +
 +
 +        chain = (
 +            {"context": retriever | self.format_docs, "question": RunnablePassthrough()}
 +            | prompt
 +            | llm
 +            | StrOutputParser()
 +        )
 +        antw = chain.invoke(user_query)
 +        return antw
 +    
 +
 +    # ALS TOOL: TavilySearchResults ==================================
 +
 +    # https://python.langchain.com/docs/integrations/tools/tavily_search/
 +    def tavilyLangChainAlsTool(self, user_query):       
 +        tool = TavilySearchResults(
 +        max_results=3,
 +        search_depth="advanced",
 +        include_answer=True,
 +        include_raw_content=True,
 +        include_images=True,
 +        # include_domains=[...],
 +        # exclude_domains=[...],
 +        # name="...",            # overwrite default tool name
 +        # description="...",     # overwrite default tool description
 +        # args_schema=...,       # overwrite default args_schema: BaseModel
 +        )
 +        antw = tool.invoke({"query": user_query})
 +        return antw
 +    
 +
 +    # WERKERS ========================================================
 +    def format_docs(self, docs):
 +        return "\n\n".join(doc.page_content for doc in docs)</code>
 +
 +
 +----
 +
 +===== โœจ Tavily doorzoekt opgegeven websites =====
 +<code>from langchain_community.retrievers import TavilySearchAPIRetriever
 +from langchain_core.output_parsers import StrOutputParser
 +from langchain_core.prompts import ChatPromptTemplate
 +from langchain_core.runnables import RunnablePassthrough
 +from langchain_openai import ChatOpenAI
 +import os
 +import streamlit as st
 +import requests  # nodig voor foutafhandeling
 +
 +
 +class Test_2:
 +    def __init__(self):
 +        os.environ["TAVILY_API_KEY"] = st.secrets["TAVILY_API_KEY"]
 +
 +    # https://python.langchain.com/docs/integrations/retrievers/tavily/
 +    def tavilyLangChainWithChain(self, vraag):
 +        try:
 +            retriever = TavilySearchAPIRetriever(
 +                k=3,
 +                include_domains=[
 +                    "kwaliteitsysteem.nl/kennisbank",
 +                    "catcollectief.nl",
 +                    "catvergoedbaar.nl",
 +                    "kwaliteitstherapeuten.nl",
 +                    "batverzekeringen.nl",
 +                    "gatgeschillen.nl",
 +                    "gatregisteropleidingen.nl/",
 +                ],
 +            )
 +            prompt = ChatPromptTemplate.from_template(
 +                """Beantwoord de vraag alleen op basis van de gegeven context.
 +
 +                Context: {context}
 +
 +                Question: {question}"""
 +            )
 +            llm = ChatOpenAI(model="gpt-4o-mini")
 +
 +            chain = (
 +                {"context": retriever | self.format_docs, "question": RunnablePassthrough()}
 +                | prompt
 +                | llm
 +                | StrOutputParser()
 +            )
 +            antw = chain.invoke(vraag)
 +            return antw
 +
 +
 +        except requests.exceptions.HTTPError as e:
 +            print(f"Er is een HTTPError opgetreden: {e}")
 +            return "Er is een fout opgetreden: Invoer moet minimaal uit twee woorden bestaan!"
 +        
 +
 +    # WERKER ========================================================
 +    def format_docs(self, docs):
 +        return "\n\n".join(doc.page_content for doc in docs)</code>
 +
 +
 +----
 +
 +
 +
  
tavily.1727809155.txt.gz ยท Laatst gewijzigd: 2024/10/01 20:59 door a3dijke