import gradio as gr from langchain_community.tools import DuckDuckGoSearchResults from typing import Literal, List, Dict def search(input_query : str, max_results : int = 5) -> List[Dict[Literal["snippet", "title", "link"], str]]: """ Perform a web search using DuckDuckGo. Args: input_query: The query to search for. max_results: The maximum number of results to return. Defaults to 5. Returns: A list of dictionaries, each containing "snippet", "title", and "link" keys. """ search = DuckDuckGoSearchResults(output_format="list", num_results = max_results) results = search.invoke(input_query) # Create an HTML table html_table = "
| Title | Snippet | Link |
|---|---|---|
| {title} | {snippet} | Link |
DuckDuckGo(ダックダックゴー)は、ユーザーのプライバシーを重視した検索エンジンです。以下のような特徴があります。
DuckDuckGoは「オンラインでのプライバシーを守りたい!」と考える方にぴったりの検索エンジンです!
""") with gr.Row(): search_query = gr.Textbox(value="トヨタ自動車株式会社 の2021年の売り上げが下がっている理由を教えてください。", label="Search query") max_results = gr.Slider(minimum=1, maximum=20, value=5, step=1, label="Max results") description = gr.Textbox(label="Description") search_results = gr.HTML(label="Search results") with gr.Row(): search_button = gr.Button("Search") search_button.click( fn=search, inputs=[search_query, max_results], outputs=[description, search_results] ) demo.launch(mcp_server=True) '''demo = gr.Interface( fn = search, inputs=[ gr.Textbox(value=myquery, label="Search query"), gr.Slider(minimum=1, maximum=20, value=5, step=1, label="Max results"), ], outputs=[gr.Textbox(label="Description"),gr.HTML(label="Search results")], title = "Web Searcher using DuckDuckGo", description = "Search the web using DuckDuckGo.", ) # Launch the interface and MCP server if __name__ == "__main__": demo.launch(mcp_server=True)'''