client.py•2.72 kB
"""
MCP Weather Client - OpenAI Responses API ile MCP Entegrasyonu
Doğal dil ile hava durumu sorgulama sistemi (Basitleştirilmiş versiyon).
Kullanım:
1. Önce weather_server.py'yi HTTP modunda başlatın:
python weather_server.py --http
2. Sonra bu client'ı çalıştırın:
python client.py
"""
import os
import sys
from dotenv import load_dotenv
from openai import OpenAI
# .env dosyasından API key'i yükle
load_dotenv()
# OpenAI client oluştur
api_key = os.getenv("OPENAI_API_KEY")
if not api_key or api_key == "sk-your-openai-api-key-here":
print("❌ HATA: Lütfen .env dosyasına geçerli bir OPENAI_API_KEY ekleyin!")
print("Örnek: OPENAI_API_KEY=sk-...")
sys.exit(1)
client = OpenAI(api_key=api_key)
# MCP Server URL
# Lokal test: http://localhost:8000/mcp
# Tunnel ile: https://your-tunnel-url.loca.lt/mcp
MCP_SERVER_URL = os.getenv("MCP_SERVER_URL", "http://localhost:8000/mcp")
def ask_weather(question: str) -> str:
"""
OpenAI Responses API kullanarak hava durumu sorusu sor.
Args:
question: Doğal dilde hava durumu sorusu
Returns:
Asistanın yanıtı
"""
try:
response = client.responses.create(
model="gpt-4o-mini",
tools=[
{
"type": "mcp",
"server_label": "weather_server",
"server_url": MCP_SERVER_URL,
"require_approval": "never",
},
],
input=question,
)
return response.output_text
except Exception as e:
return f"❌ Hata: {str(e)}"
def main():
"""Ana uygulama döngüsü."""
print("\n" + "=" * 50)
print("🌤️ Hava Durumu Asistanı (Responses API)")
print("=" * 50)
print(f"\n🌐 MCP Server: {MCP_SERVER_URL}")
print("\nÖrnek sorular:")
print(" • Hamburg'da hava nasıl?")
print(" • Yarın İstanbul'da hava kaç derece olacak?")
print(" • Berlin için 5 günlük tahmin ver")
print("\nÇıkmak için 'q' veya 'çıkış' yazın.")
print("=" * 50)
while True:
try:
user_input = input("\n🧑 Siz: ").strip()
except (EOFError, KeyboardInterrupt):
print("\n\n👋 Görüşürüz!")
break
if user_input.lower() in ('q', 'quit', 'exit', 'çıkış', 'çık'):
print("\n👋 Görüşürüz!")
break
if not user_input:
continue
print("\n⏳ Düşünüyorum...")
response = ask_weather(user_input)
print(f"\n🤖 Asistan: {response}")
if __name__ == "__main__":
main()