File size: 2,576 Bytes
e35f056 9af61ac e35f056 0b10ccb e35f056 2a05c69 0b10ccb 4639906 0b10ccb 2a05c69 0b10ccb 4639906 2a05c69 e35f056 43d44da 0b10ccb e35f056 d6054c0 e35f056 b17bf8d e35f056 b17bf8d e35f056 b17bf8d d6054c0 e35f056 0b10ccb 92c55b6 0b10ccb d6054c0 0b10ccb b17bf8d e35f056 0b10ccb 92c55b6 0b10ccb 92c55b6 0b10ccb e35f056 0b10ccb d6054c0 0b10ccb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
from pathlib import Path
import gradio as gr
from tool import LinkupSearchTool
def run_search(query, depth, api_key):
if not query.strip() or not depth or not api_key.strip():
return "β All fields are required."
try:
tool = LinkupSearchTool(linkup_api_key=api_key)
return tool.forward(query=query, depth=depth)
except Exception as e:
return f"β Error: {str(e)}"
def enable_submit(q, d, k):
return gr.Button.update(interactive=bool(q.strip() and d and k.strip()))
def load_readme():
path = Path(__file__).parent / "README.md"
if not path.exists():
return "README.md not found."
lines = path.read_text().splitlines()
# Strip frontmatter if present
if lines and lines[0].strip() == "---":
end_index = next(
(i for i, line in enumerate(lines[1:], 1) if line.strip() == "---"), -1
)
if end_index != -1:
lines = lines[end_index + 1 :] # skip frontmatter block
return "\n".join(lines)
with gr.Blocks(title="Linkup Web Search Tool") as demo:
gr.Markdown(
"""
# π Linkup Web Search Tool
Perform real-time web search using [Linkup API](https://linkup.so).
""",
elem_id="header",
)
with gr.Row():
query_input = gr.Textbox(
label="Search Query",
placeholder="e.g. Linkup French AI Startup",
lines=1,
)
depth_input = gr.Dropdown(
label="Search Depth",
choices=["standard", "deep"],
value="standard",
allow_custom_value=False,
)
api_key_input = gr.Textbox(
label="Linkup API Key",
placeholder="Paste your Linkup API key here",
type="password",
)
search_btn = gr.Button("π Search", interactive=True)
output = gr.Markdown(
"π¬ *Enter a query and click Search to begin.*", elem_id="output"
)
search_btn.click(
fn=run_search,
inputs=[query_input, depth_input, api_key_input],
outputs=output,
show_progress=True,
)
query_input.input(
enable_submit, [query_input, depth_input, api_key_input], [search_btn]
)
depth_input.input(
enable_submit, [query_input, depth_input, api_key_input], [search_btn]
)
api_key_input.input(
enable_submit, [query_input, depth_input, api_key_input], [search_btn]
)
gr.Markdown("---")
gr.Markdown("## π Tool Documentation")
gr.Markdown(load_readme())
demo.launch()
|