## scripts/ask.py import sys import json import requests from datetime import datetime from config import load_config def build_payload_mcp(message: str): return { "tool": "ask_message", # MCPサーバー側で定義されたツール名 "input": { "message": message } } def build_payload_openai(cfg, message: str): return { "model": cfg["model"], "messages": [ {"role": "system", "content": "あなたは思いやりのあるAIです。"}, {"role": "user", "content": message} ], "temperature": 0.7 } def call_mcp(cfg, message: str): payload = build_payload_mcp(message) headers = {"Content-Type": "application/json"} response = requests.post(cfg["url"], headers=headers, json=payload) response.raise_for_status() return response.json().get("output", {}).get("response", "❓ 応答が取得できませんでした") def call_openai(cfg, message: str): payload = build_payload_openai(cfg, message) headers = { "Authorization": f"Bearer {cfg['api_key']}", "Content-Type": "application/json", } response = requests.post(cfg["url"], headers=headers, json=payload) response.raise_for_status() return response.json()["choices"][0]["message"]["content"] def main(): if len(sys.argv) < 2: print("Usage: ask.py 'your message'") return message = sys.argv[1] cfg = load_config() print(f"🔍 使用プロバイダー: {cfg['provider']}") try: if cfg["provider"] == "openai": response = call_openai(cfg, message) elif cfg["provider"] == "mcp": response = call_mcp(cfg, message) else: raise ValueError(f"未対応のプロバイダー: {cfg['provider']}") print("💬 応答:") print(response) # ログ保存(オプション) save_log(message, response) except Exception as e: print(f"❌ 実行エラー: {e}") def save_log(user_msg, ai_msg): from config import MEMORY_DIR date_str = datetime.now().strftime("%Y-%m-%d") path = MEMORY_DIR / f"{date_str}.json" path.parent.mkdir(parents=True, exist_ok=True) if path.exists(): with open(path, "r") as f: logs = json.load(f) else: logs = [] now = datetime.utcnow().isoformat() + "Z" logs.append({"timestamp": now, "sender": "user", "message": user_msg}) logs.append({"timestamp": now, "sender": "ai", "message": ai_msg}) with open(path, "w") as f: json.dump(logs, f, indent=2, ensure_ascii=False) if __name__ == "__main__": main()