Ana içeriğe geç

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_adresi opsiyonunu 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