Spaces:
Configuration error
Configuration error
File size: 2,948 Bytes
04ea0e7 0baa4be cee7335 04ea0e7 0baa4be cee7335 0baa4be 64c5ae2 0baa4be 04ea0e7 cee7335 04ea0e7 14b8437 |
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 |
import gradio as gr
import requests
import os
from dotenv import load_dotenv
import numpy as np
load_dotenv()
def get_random_number(min=1, max=100):
"""
指定した範囲(min以上max未満)でランダムな整数を返します。
Args:
min (int): 乱数の最小値(デフォルトは1)
max (int): 乱数の最大値(デフォルトは100、maxは含まれません)
Returns:
int: 生成されたランダムな整数
"""
return np.random.randint(min, max)
def brave_search(query):
"""
Brave Search APIを使ってウェブ検索を行うMCPツール関数です。
Args:
query (str): 検索クエリ
Returns:
str: 検索結果のタイトル、URL、説明文をまとめた文字列。
エラー時はエラーメッセージを返します。
MCP Tool:
name: brave_search
description: Brave Search APIを利用してウェブ検索を行い、上位5件の結果を返します。
parameters:
- name: query
type: string
description: 検索したいキーワードやフレーズ
returns: 検索結果のリストまたはエラーメッセージ
"""
api_key = os.getenv("BRAVE_API_KEY")
if not api_key:
return "Brave APIキーが環境変数に設定されていません。"
url = "https://api.search.brave.com/res/v1/web/search"
headers = {
"Accept": "application/json",
"X-Subscription-Token": api_key
}
params = {
"q": query,
"count": 5
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
results = response.json().get("web", {}).get("results", [])
if not results:
return "検索結果が見つかりませんでした。"
output = ""
for r in results:
output += f"【{r.get('title','No Title')}】\n{r.get('url','')}\n{r.get('description','')}\n\n"
return output
else:
return f"エラーが発生しました: {response.status_code}"
with gr.Blocks() as demo:
gr.Markdown("# My APIs")
with gr.Accordion("Brave検索", open=True):
query = gr.Textbox(label="検索クエリ")
output = gr.Textbox(label="検索結果", lines=10)
search_btn = gr.Button("検索", variant="primary")
search_btn.click(fn=brave_search, inputs=[query], outputs=output)
with gr.Accordion("ランダム数生成", open=True):
min_value = gr.Number(label="最小値", value=1)
max_value = gr.Number(label="最大値", value=100)
random_number = gr.Number(label="ランダム数")
generate_btn = gr.Button("生成", variant="primary")
generate_btn.click(fn=get_random_number, inputs=[min_value, max_value], outputs=random_number)
if __name__ == "__main__":
demo.launch(mcp_server=True)
|