Yasu777 commited on
Commit
ca44502
·
verified ·
1 Parent(s): 3bff79f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +108 -0
app.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+ from groq import Groq
4
+
5
+ # Streamlitアプリのセットアップ
6
+ st.set_page_config(
7
+ page_title="KizukiChat",
8
+ page_icon="💻",
9
+ layout="wide"
10
+ )
11
+
12
+ # タイトルと説明
13
+ st.title("コーディングアシスタント 💻")
14
+ st.markdown("このアプリはGroq APIを使用したコーディング特化のAIチャットアシスタントです。")
15
+
16
+ # APIキーの取得(Hugging Face Spaces環境変数から)
17
+ api_key = os.getenv("GROQ_API_KEY", "")
18
+
19
+ # モデル選択
20
+ model_option = st.sidebar.selectbox(
21
+ "モデルを選択",
22
+ ["llama3-70b-8192", "llama3-8b-8192", "mixtral-8x7b-32768"]
23
+ )
24
+
25
+ # システムプロンプトの設定
26
+ system_prompt = st.sidebar.text_area(
27
+ "システムプロンプト",
28
+ value="あなたはコーディングの専門家です。ユーザーのプログラミングに関する質問に詳細かつ正確に回答してください。コードの説明は日本語で、コードサンプルは適切なプログラミング言語で提供してください。",
29
+ height=150
30
+ )
31
+
32
+ # チャット履歴の初期化
33
+ if "messages" not in st.session_state:
34
+ st.session_state.messages = []
35
+
36
+ # 過去のメッセージを表示
37
+ for message in st.session_state.messages:
38
+ with st.chat_message(message["role"]):
39
+ st.markdown(message["content"])
40
+
41
+ # ユーザー入力
42
+ if prompt := st.chat_input("質問を入力してください"):
43
+ # ユーザーメッセージを表示
44
+ st.chat_message("user").markdown(prompt)
45
+
46
+ # ユーザーメッセージをセッション状態に追加
47
+ st.session_state.messages.append({"role": "user", "content": prompt})
48
+
49
+ # APIキーがある場合のみ実行
50
+ if api_key:
51
+ try:
52
+ # Groq APIクライアントの初期化
53
+ client = Groq(api_key=api_key)
54
+
55
+ # チャット履歴の準備
56
+ messages = [{"role": "system", "content": system_prompt}]
57
+ messages.extend(st.session_state.messages)
58
+
59
+ # レスポンスを取得
60
+ with st.spinner("回答を生成中..."):
61
+ response = client.chat.completions.create(
62
+ model=model_option,
63
+ messages=messages,
64
+ temperature=0.5,
65
+ max_tokens=8192,
66
+ top_p=1,
67
+ stream=False
68
+ )
69
+
70
+ # レスポンスを表示
71
+ assistant_response = response.choices[0].message.content
72
+ st.chat_message("assistant").markdown(assistant_response)
73
+
74
+ # アシスタントメッセージをセッション状態に追加
75
+ st.session_state.messages.append({"role": "assistant", "content": assistant_response})
76
+
77
+ except Exception as e:
78
+ st.error(f"エラーが発生しました: {str(e)}")
79
+ else:
80
+ st.error("GROQ_API_KEYが設定されていません。Hugging Face Spacesの環境変数で設定してください。")
81
+
82
+ # チャット履歴のクリア機能
83
+ if st.sidebar.button("会話履歴をクリア"):
84
+ st.session_state.messages = []
85
+ st.experimental_rerun()
86
+
87
+ # README情報
88
+ st.sidebar.markdown("---")
89
+ st.sidebar.markdown("### 使い方")
90
+ st.sidebar.markdown("""
91
+ 1. Hugging Face Spacesの環境変数でGROQ_API_KEYを設定
92
+ 2. 使用するモデルを選択
93
+ 3. 必要に応じてシステムプロンプトを調整
94
+ 4. チャット入力欄に質問を入力
95
+ """)
96
+
97
+ # API Keyがない場合の警告表示
98
+ if not api_key:
99
+ st.warning("""
100
+ ### ⚠️ GROQ_API_KEYが設定されていません
101
+
102
+ このアプリを使用するには、Hugging Face Spacesの環境変数設定でGROQ_API_KEYを設定する必要があります:
103
+
104
+ 1. Spacesのダッシュボードに移動
105
+ 2. Settings > Repository secrets
106
+ 3. 新しいシークレットを追加: キー名 `GROQ_API_KEY`、値に自分のGroq APIキーを入力
107
+ 4. アプリを再起動
108
+ """)