LangSmith Studio ile Uzak Sunucudaki Projeye Erişim
Diyelim ki LangChain veya LangGraph ile bir proje geliştiriyorsunuz ve geliştirme ortamınızı uzak bir sunucuda tutmak istiyorsunuz.
LangSmith Studio çözümüne bu sunucu üzerinden erişmek istediğinizde, basit bir şekilde şu linki kullanabilirsiniz:
https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
Ancak burada şöyle bir durum var: Takımınızdaki her geliştirici LangSmith Studio ile hata ayıklamak istediğinde, bu linkin çalışabilmesi için projeyi sunucudan alıp kendi lokal geliştirme ortamını kurmaları gerekir. Aksi halde link onlar için çalışmayacaktır.
Peki, projeyi lokale almanın mümkün olmadığı durumlarda ne yapmalı? Mesela proje, uzak sunucudaki Ollama gibi bir lokal modeli kullanıyorsa. Bu yazıda buna değineceğiz.
Temel fikir, Studio ile uzak sunucudaki projeye erişim sağlamak:
https://smith.langchain.com/studio/?baseUrl=http://sunucu_statik_ip:2024
Hadi bunu deneyelim. Öncesinde şunları unutmayın:
- Gerekirse NAT ayarlarını yapın. Statik ip adresine 2024 portundan gelen trafik sunucuya aktarılmalı.
- LangGraph’ı çalıştırırken
--host sunucu_ip_adresiopsiyonunu ekleyin.
Doğru ayar yapıldıysa:
curl http://sunucu_statik_ip:2024
isteği "Not Found" cevabını üretmelidir. Ya da http://sunucu_statik_ip:2024/docs linkini deneyebilirsiniz.
Tarayıcıda karşımıza çıkan hata
Tarayıcıda aşağıdaki hatayı görebiliriz:
Failed to initialize Studio
Please verify if the API server is running or accessible from the browser.
TypeError: NetworkError when attempting to fetch resource.
Ne olduğunu anlamak için konsola baktığımızda ayrıca şunu görebiliriz:
http://sunucu_statik_ip:2024/assistants/search karma etkin içeriğinin yüklenmesi engellendi
Evet, bu Mixed Content sorunu. Yani tarayıcı, HTTPS sayfasından(smith.langchain.com) HTTP kaynak çağrılarını(http://sunucu_statik_ip) engelliyor.
Çözüm yolları
1. Lokal üzerinden proxy kullanmak
Uzak sunucuyu localhost üzerinden proxy’leyebiliriz:
lokal → http → sunucu
Bu sayede:
http://127.0.0.1:2024/assistants/search
sorgusu,
http://sunucu_statik_ip:2024/assistants/search
adresine yönlendirilmiş olur.
⚠️ Dezavantajı: Tüm geliştiricilerin bunu yapması gerekir, bu da ekstra iş yükü doğurur.
2. Sunucuya domain atayıp HTTPS üzerinden erişim sağlamak
Bu yöntem daha kalıcı ve ölçeklenebilir bir çözümdür.
Yani:
https://smith.langchain.com/studio/?baseUrl=https://subdomain.domain
linki üzerinden erişim sağlayabilirsiniz.
Bunun için web sunucundan gerekli ayarları yaptıktan sonra HTTPS sertifikası almak gerekir.
Bunun için certbot kullanabilirsiniz:
sudo certbot --apache
Örnek Apache2 konfigürasyonu:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ProxyPreserveHost On
ServerName subdomain.domain
ProxyPass / http://sunucu_ip_adresi:2024/
ProxyPassReverse / http://sunucu_ip_adresi:2024/
RewriteEngine on
SSLCertificateFile /etc/letsencrypt/live/subdomain.domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/subdomain.domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Artık LangSmith Studio’ya bu adresten güvenli bir şekilde erişebilirsiniz:
https://smith.langchain.com/studio/?baseUrl=https://subdomain.domain
flowchart TD
A[LangSmith Studio Tarayıcı]
subgraph Proxy Çözümü
A -->|127.0.0.1:2024 Proxy| C[Lokal Proxy]
C
end
subgraph HTTPS Çözümü
E["Sunucu: LangGraph/LangChain API"]
A -->|https://subdomain.domain| D[Apache/Nginx Reverse Proxy]
D
end
E
D -->|"HTTP"| E
C -->|"HTTP"| E
A -->|"HTTPS over static IP"| E
E
F["Projeye Erişim & Hata Ayıklama"]
E --> F