spoon-1 commited on
Commit
a347baa
·
verified ·
1 Parent(s): e2c283d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -27
app.py CHANGED
@@ -7,6 +7,8 @@ def fetch_gemini_models(api_key):
7
  Fetches available Gemini models and returns them as a pandas DataFrame.
8
  """
9
 
 
 
10
  if not api_key:
11
  return None, "エラー: GEMINI_API_KEY が必要です。"
12
 
@@ -31,7 +33,9 @@ def fetch_gemini_models(api_key):
31
  translated_methods = [method_translation.get(method, method) for method in m.supported_actions]
32
  methods = ", ".join(translated_methods)
33
 
 
34
  data.append({
 
35
  "モデル名": m.name,
36
  "表示名": m.display_name,
37
  "対応メソッド": methods
@@ -47,25 +51,45 @@ def fetch_gemini_models(api_key):
47
  except Exception as e:
48
  return None, f"エラーが発生しました: {str(e)}"
49
 
50
- def check_model_access(api_key, model_name):
51
  """
52
- Checks if the API key has access to the specified model by attempting a simple generation.
53
  """
54
  if not api_key:
55
  return "エラー: GEMINI_API_KEY が必要です。"
56
- if not model_name:
57
- return "エラー: モデル必要です。"
58
 
59
- try:
60
- client = genai.Client(api_key=api_key)
61
- # Try a minimal generation request
62
- response = client.models.generate_content(
63
- model=model_name,
64
- contents="test",
65
- )
66
- return f"成功: {model_name} へアクセス確認されました応答を受信しました。"
67
- except Exception as e:
68
- return f"アクセス確認失敗: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  # Define Gradio Theme (Rich Aesthetics)
71
  theme = gr.themes.Soft(
@@ -96,7 +120,15 @@ with gr.Blocks(theme=theme, title="Gemini モデルチェッカー") as demo:
96
  fetch_btn = gr.Button("モデル一覧取得", variant="primary", scale=1)
97
 
98
  output_status = gr.Textbox(label="ステータス", interactive=False)
99
- output_table = gr.DataFrame(label="利用可能なモデル")
 
 
 
 
 
 
 
 
100
 
101
  fetch_btn.click(
102
  fn=fetch_gemini_models,
@@ -105,20 +137,14 @@ with gr.Blocks(theme=theme, title="Gemini モデルチェッカー") as demo:
105
  )
106
 
107
  gr.Markdown("## モデルアクセス確認")
108
- with gr.Row():
109
- model_name_input = gr.Textbox(
110
- label="モデル名",
111
- placeholder="gemini-1.5-pro-001",
112
- interactive=True,
113
- scale=4
114
- )
115
- check_btn = gr.Button("アクセス確認", variant="secondary", scale=1)
116
 
117
- access_status = gr.Textbox(label="アクセス確認結果", interactive=False)
 
118
 
119
  check_btn.click(
120
- fn=check_model_access,
121
- inputs=[api_key_input, model_name_input],
122
  outputs=access_status
123
  )
124
 
@@ -128,7 +154,7 @@ with gr.Blocks(theme=theme, title="Gemini モデルチェッカー") as demo:
128
  ### 使い方
129
  1. Google AI Studioから取得��た **APIキー** を入力します。
130
  2. **モデル一覧取得** ボタンをクリックします。利用可能なモデルの一覧が表示されます。
131
- 3. 特定のモデルへのアクセスを確認するには、**モデルアクセス確認** セクションで **モデル名** を入力し、**アクセス確認** ボタンをクリックします。
132
  """
133
  )
134
 
 
7
  Fetches available Gemini models and returns them as a pandas DataFrame.
8
  """
9
 
10
+
11
+
12
  if not api_key:
13
  return None, "エラー: GEMINI_API_KEY が必要です。"
14
 
 
33
  translated_methods = [method_translation.get(method, method) for method in m.supported_actions]
34
  methods = ", ".join(translated_methods)
35
 
36
+ # Checkbox column first
37
  data.append({
38
+ "選択": False,
39
  "モデル名": m.name,
40
  "表示名": m.display_name,
41
  "対応メソッド": methods
 
51
  except Exception as e:
52
  return None, f"エラーが発生しました: {str(e)}"
53
 
54
+ def check_selected_models(api_key, df):
55
  """
56
+ Checks access for all selected models in the dataframe.
57
  """
58
  if not api_key:
59
  return "エラー: GEMINI_API_KEY が必要です。"
60
+ if df is None or df.empty:
61
+ return "エラー: モデル一覧です。"
62
 
63
+ # Filter selected rows
64
+ # Gradio dataframe usually sends back a pandas dataframe or list of lists
65
+ if isinstance(df, dict): # Handle some Gradio versions wrapping it
66
+ df = pd.DataFrame(df['data'], columns=df['headers'])
67
+
68
+ # Check if "選択" column exists
69
+ if "選択" not in df.columns:
70
+ return "エラー: モデル一覧形式不正です。"
71
+
72
+ selected_rows = df[df["選択"] == True]
73
+
74
+ if selected_rows.empty:
75
+ return "警告: チェックするモデルが選択されていません。"
76
+
77
+ results = []
78
+ client = genai.Client(api_key=api_key)
79
+
80
+ for index, row in selected_rows.iterrows():
81
+ model_name = row["モデル名"]
82
+ try:
83
+ # Try a minimal generation request
84
+ response = client.models.generate_content(
85
+ model=model_name,
86
+ contents="test",
87
+ )
88
+ results.append(f"✅ {model_name}: アクセス確認成功")
89
+ except Exception as e:
90
+ results.append(f"❌ {model_name}: 失敗 - {str(e)}")
91
+
92
+ return "\n".join(results)
93
 
94
  # Define Gradio Theme (Rich Aesthetics)
95
  theme = gr.themes.Soft(
 
120
  fetch_btn = gr.Button("モデル一覧取得", variant="primary", scale=1)
121
 
122
  output_status = gr.Textbox(label="ステータス", interactive=False)
123
+ # Make dataframe interactive to allow checkbox editing
124
+ output_table = gr.DataFrame(
125
+ label="利用可能なモデル (左端のチェックボックスで選択)",
126
+ interactive=True,
127
+ type="pandas",
128
+ col_count=(4, "fixed"), # 選択, モデル名, 表示名, 対応メソッド
129
+ headers=["選択", "モデル名", "表示名", "対応メソッド"],
130
+ datatype=["bool", "str", "str", "str"]
131
+ )
132
 
133
  fetch_btn.click(
134
  fn=fetch_gemini_models,
 
137
  )
138
 
139
  gr.Markdown("## モデルアクセス確認")
140
+ gr.Markdown("上の表でチェックを入れたモデルに対して、一括でアクセス確認を行います。")
 
 
 
 
 
 
 
141
 
142
+ check_btn = gr.Button("選択したモデルのアクセス確認", variant="secondary")
143
+ access_status = gr.Textbox(label="アクセス確認結果", interactive=False, lines=10)
144
 
145
  check_btn.click(
146
+ fn=check_selected_models,
147
+ inputs=[api_key_input, output_table],
148
  outputs=access_status
149
  )
150
 
 
154
  ### 使い方
155
  1. Google AI Studioから取得��た **APIキー** を入力します。
156
  2. **モデル一覧取得** ボタンをクリックします。利用可能なモデルの一覧が表示されます。
157
+ 3. 特定のモデルへのアクセスを確認するには、**モデルアクセス確認** セクションで **モデル名** を選択(または入力し、**アクセス確認** ボタンをクリックします。
158
  """
159
  )
160