from langchain.utilities import SearxSearchWrapper import gradio as gr # Initialize the SearxNG search wrapper # You can replace this URL with any SearXNG instance you prefer searx = SearxSearchWrapper(searx_host="https://searx.thegpm.org") def search_news(query, num_results=5): try: # Perform the search search_results = searx.results(query, num_results=num_results) # Format the output formatted_results = "Search Results:\n\n" for i, result in enumerate(search_results, 1): formatted_results += f"{i}. {result['title']}\n" formatted_results += f" URL: {result['link']}\n" formatted_results += f" Snippet: {result['snippet']}\n\n" return formatted_results except Exception as e: return f"An error occurred: {str(e)}" # Create Gradio interface iface = gr.Interface( fn=search_news, inputs=[ gr.Textbox(label="Enter a news topic to search for"), gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Number of results") ], outputs=gr.Textbox(label="Search Results", lines=20), title="News Search with LangChain and SearXNG", description="Search for news articles using SearXNG through LangChain." ) iface.launch()