Veri Kaynakları (Data Sources)
Panel → Ayarlar → Veri Kaynakları (/settings/connectors) ekranı, harici sistemlerinizi salt-okuma olarak bilgi tabanınıza (RAG) bağlar. Kaynak sistemlerde hiçbir değişiklik/silme yapılmaz — yalnız okunur ve indexlenir.
Bu ekran bilgi tabanını besleyen connector'lar içindir. Ajanın dış sistemlerde iş yapması (e-posta gönder, takvim oluştur) için ise ayrı bir yer var: Ajan Connector'ları (/settings/agent-connectors). Karışmasın.
Genel akış
- Ayarlar → Veri Kaynakları'nı açın. Üstte Bağlı Kaynaklar listesi, altta Yeni Bağlantı Ekle bölümü vardır.
- Eklemek istediğiniz kaynak türünü seçin (SQL · Google Drive · OneDrive · Dropbox · Notion · Zendesk · OneNote).
- Her kaynak formunun yanında bir Bağlantı nasıl yapılır? düğmesi vardır — o kaynağa özel adımları ve alan açıklamalarını panelden de görürsünüz.
- Alanları doldurup Kaydet ve bağla'ya basın. Ardından Test (bağlantıyı doğrula), Senkronize (yeniden çek) ve İçerik (indekslenen dokümanları gözat) düğmelerini kullanabilirsiniz.
- Senkron aralığı (dk) ile ne sıklıkta yeniden çekileceğini, Tam yeniden senkron ile de tam tazelemeyi ayarlarsınız.
Tüm parolalar, token'lar ve OAuth sırları şifrelenerek saklanır. Bir kaynak silindiğinde ilgili kimlik bilgileri de kaldırılır.
Bağlanma yolları (OAuth kaynakları)
Google Drive, OneDrive, OneNote ve Notion için yollar:
| Yol | Nasıl | Kime uygun |
|---|---|---|
| Merkezi tek tık | Formdaki "Google/Microsoft/Notion ile Bağlan" düğmesine basarsınız; sağlayıcının onay ekranı açılır, izin verir ve geri dönersiniz. SemAgent'in merkezi uygulamasını kullanır (operatör kurmuşsa). Kimlik bilgilerini siz görmezsiniz. | Operatör doğrulanmış merkezi uygulama işletiyorsa en hızlısı. |
| Kendi uygulamanız — tek tık (BYO, önerilen) | Kendi OAuth uygulamanızı oluşturur, panele yalnızca Client ID + Client secret girip "Kaydet ve Bağlan"a basarsınız. SemAgent onay akışını sizin uygulamanızla koşar ve token'ı sizin için üretir. Uygulamanız Testing'de kalabilir — Google doğrulaması / CASA gerekmez. | Önerilen — merkezi doğrulamadan kaçınır; her tenant izole. |
| Kendi uygulamanız — manuel | Kendiniz bir refresh_token üretip refresh_token + client_id + client_secret değerlerini elle yapıştırırsınız. | Zaten token'ınız varsa veya otomatikleştiriyorsanız. |
Aşağıda her kaynak için ayrıntılı adımlar var. BYO'da tek-tık akışı için panele yalnızca Client ID + Client secret girmeniz yeterlidir.
Veritabanları (SQL)
Salt-okuma SQL kaynakları: PostgreSQL · MySQL · SQL Server (MSSQL). Bir SELECT sorgusunun sonucu satır satır indexlenir.
| Alan | Açıklama |
|---|---|
host * | Sunucu adresi. |
port | PostgreSQL 5432 · MySQL 3306 · MSSQL 1433. |
database * | Veritabanı adı. |
user | Kullanıcı — yalnız SELECT yetkili bir kullanıcı önerilir. |
password | Parola. |
query * | SELECT veya WITH ile başlamalı; yazma sorguları reddedilir. |
incremental_column | Artımlı çekim için sütun (ör. updated_at) — sadece değişenleri alır. |
title_field | Doküman başlığı olarak kullanılacak sütun. |
delete_query / delete_incremental_column | Silinen kayıtları yansıtmak için (opsiyonel). |
Adım adım: salt-okur kullanıcı oluşturma
Ajanın veritabanınızda hiçbir şeyi değiştirememesi için yalnızca SELECT yetkili yeni bir kullanıcı açın (mümkünse bir read-replica üzerinde). Motorunuza göre:
PostgreSQL:
CREATE USER semagent_ro WITH PASSWORD 'guclu-bir-parola';
GRANT CONNECT ON DATABASE veritabani_adi TO semagent_ro;
GRANT USAGE ON SCHEMA public TO semagent_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO semagent_ro;
-- ileride eklenecek tablolar da otomatik okunabilsin:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO semagent_ro;MySQL / MariaDB:
CREATE USER 'semagent_ro'@'%' IDENTIFIED BY 'guclu-bir-parola';
GRANT SELECT ON veritabani_adi.* TO 'semagent_ro'@'%';
FLUSH PRIVILEGES;SQL Server (MSSQL):
CREATE LOGIN semagent_ro WITH PASSWORD = 'guclu-bir-parola';
USE veritabani_adi;
CREATE USER semagent_ro FOR LOGIN semagent_ro;
ALTER ROLE db_datareader ADD MEMBER semagent_ro;- Yukarıdaki komutları çalıştırıp kullanıcıyı oluşturun (parolayı kendiniz belirleyin).
- Sunucunuz IP kısıtlıysa, SemAgent'ın çıkış IP'sine (
173.212.244.210) gelen bağlantıya izin verin (güvenlik duvarı /pg_hba.conf/ bulut "authorized networks"). - Panelde
host,port,database,user,passwordalanlarını doldurun. - Sorgu alanına indekslenecek içeriği döndüren bir
SELECT(veyaWITH) yazın — ör. ürün, SSS ya da bilgi tablonuz. Yazma sorguları reddedilir. - Artımlı çekim için Artımlı kolon'a bir güncelleme zamanı sütunu (
updated_at) girin; yalnız değişen satırlar çekilir. - Kaydet ve bağla → Test ile doğrulayın.
Yalnız-SELECT kullanıcı, ajanın verinizi okuyabilmesini ama değiştirememesini garanti eder. MSSQL'de artımlı çekim kullanırken sorgunun en üst düzeyinde ORDER BY bulunmamalıdır.
Bulut depolama & dokümanlar
Google Drive, OneDrive, OneNote ve Notion. Bağlanmanın yolları: (1) platformun merkezi tek-tık OAuth'u (operatör kurmuşsa); (2) kendi OAuth uygulamanızla tek-tık (BYO — önerilen): panele yalnızca Client ID + Client secret girip "Kaydet ve Bağlan"a basarsınız, SemAgent onay akışını sizin uygulamanızla koşar (refresh_token'ı elle üretmenize gerek yok); (3) elle token (kendiniz üretip yapıştırırsınız). BYO'da aşağıdaki redirect URI'yi uygulamanıza girmeniz şarttır; girmezseniz redirect_uri_mismatch hatası alırsınız. Girdiğiniz Client secret şifreli saklanır ve panele geri gösterilmez.
Redirect URI (Authorized redirect URI / Yönlendirme URI'si) — sağlayıcı OAuth uygulamanıza TAM olarak şunu ekleyin:
- Google:
https://semagent.ai/api/connectors/oauth/google/callback - Microsoft:
https://semagent.ai/api/connectors/oauth/microsoft/callback - Notion:
https://semagent.ai/api/connectors/oauth/notion/callback
OAuth Playground ile refresh_token üretecekseniz ayrıca https://developers.google.com/oauthplayground'u da ekleyin.
Google Drive
Tek tık (önerilen): formda "Google ile Bağlan" düğmesine basın → Google onay ekranında hesabınızı seçip drive.readonly iznini verin → geri döndüğünüzde bir Google Picker açılır; indekslenecek dosya veya klasörleri seçersiniz. Kendi OAuth uygulamanızı oluşturmanıza gerek yoktur. "Access blocked / redirect_uri_mismatch" alıyorsanız sorun giderme'ye bakın.
Kendi OAuth uygulamanızla (BYO) — Google Cloud Console adım adım
Kendi uygulamanızla iki mod var (panelde seçilir):
- Tüm Drive (drive.readonly) — önerilen: Picker gerekmez, bağlanır bağlanmaz tüm Drive'ı (veya bir klasörü) tarar. Kendi uygulamanızla en güvenilir yol. Uygulamanızda
drive.readonlykapsamı açık olmalı. - Yalnız seçtiğim dosyalar (drive.file + Picker): tek tek dosya seçersiniz — ama
drive.file'ın seçilen dosyaları yalnız Picker'ı çağıran uygulamaya açması nedeniyle, kendi uygulamanızda Google Picker API etkin olmalıdır (aksi halde seçtiğiniz dosyalar senkronda "File not found / 0 doküman" olur). Bu ekstra kurulumu istemiyorsanız "Tüm Drive" modunu kullanın.
Google, OAuth ekranını yeni Google Auth Platform arayüzüne taşıdı (console.cloud.google.com/auth). Sıra şöyle:
- Proje seçin/oluşturun: üstteki proje seçiciden bir proje seçin ya da New Project ile oluşturun. Organization (Kuruluş) — kişisel Gmail hesabında genelde "No organization" olur; bu normaldir, öylece bırakın. Google Workspace hesabıysanız kuruluşunuz seçili gelir.
- Drive API'yi etkinleştirin: APIs & Services → Library → Google Drive API → Enable.
- Consent screen / Branding: sol menü Google Auth Platform → Branding → App name (ör. SemAgent Data Source), User support email, Developer contact email girin → Save.
- Audience (Hedef kitle): Google Auth Platform → Audience →
- User type: kişisel Gmail veya farklı Workspace hesaplarını bağlayacaksanız External seçin. (Yalnız kendi Workspace kuruluşunuzsa Internal — onay ekranı olmadan çalışır.)
- Publishing status: Testing'de bırakabilirsiniz; bu durumda Test users'a bağlanacağınız Google hesabı e-postasını EKLEYİN (yoksa "Access blocked: app is being tested" alırsınız). Herkese açmak isterseniz Publish app (hassas
drive.readonlykapsamı doğrulama gerektirir; test için Testing yeterli).
- Scopes (Kapsamlar) — Data Access: Google Auth Platform → Data Access → Add or remove scopes → listeden veya "Manually add scopes" ile
https://www.googleapis.com/auth/drive.readonly(salt-okuma) ekleyip Save. (drive.readonly "restricted/sensitive" bir kapsamdır — Testing modunda sorun değil.) - OAuth client (İstemci) oluşturun: Google Auth Platform → Clients → Create client →
- Application type: Web application.
- Authorized redirect URIs → Add URI:
https://semagent.ai/api/connectors/oauth/google/callback(OAuth Playground ile token üretecekseniz ayrıcahttps://developers.google.com/oauthplayground). - Authorized JavaScript origins: boş bırakın (sunucu-taraflı akış).
- Create → dönen Client ID ve Client secret'ı kaydedin.
- Panelde bağlayın (tek-tık — önerilen): Veri Kaynakları → Google Drive → "Kendi OAuth uygulamanızla bağlanın" panelinde Client ID + Client secret'ı girip "Kaydet ve Bağlan"a basın. SemAgent onay akışını SİZİN uygulamanızla koşar ve
refresh_token'ı sizin için alır — elle token üretmenize gerek yoktur. (Uygulamanız Testing'de kalabilir; kendinizi Test user eklemeyi unutmayın.) - Alternatif (elle refresh_token): dilerseniz OAuth Playground ile üretebilirsiniz: sağ üst dişli → "Use your own OAuth credentials" → Client ID/Secret girin → sol listeden Drive API v3 →
drive.readonly→ Authorize APIs → Exchange authorization code for tokens → çıkanrefresh_token'ı panelde Refresh token + Client ID + Client secret alanlarına yapıştırın (Playground'u redirect URI'lerinize eklemeyi unutmayın). İsteğe bağlı Klasör ID (Drive URL'sindeki.../folders/<ID>) tek klasörü sınırlar.
Erişim modu: tek-tıkta yeni bağlantılar varsayılan drive.file (yalnız seçtiğiniz dosyalar) — en dar kapsam. Tüm Drive'ı aramak için drive.readonly ile bağlanın.
OneDrive
Önerilen — kendi uygulamanızla tek tık: aşağıdaki adımlarla bir Azure uygulaması kaydedin, panele Client ID + Client secret girip "Kaydet ve Bağlan"a basın. "Bu sağlayıcı için OAuth yapılandırılmamış" görüyorsanız merkezi Microsoft OAuth kurulu değildir — bu normaldir; kendi uygulamanızın bilgilerini girin (merkezi doğrulama/CASA'dan kaçınmanın da amacı budur).
Kendi uygulamanızla (BYO) — Azure App registration adım adım
- ⚠️ Dizin (directory) OLUŞTURMAYIN — gerek yok. Kişisel Microsoft/Outlook hesapları uygulamayı dizin oluşturmadan doğrudan kaydedebilir.
portal.azure.com/#create/Microsoft.AzureActiveDirectoryile dizin oluşturmayı denerseniz kişisel hesaplarda genelde 401 "You don't have access" alırsınız — bu adımı tamamen atlayın. Zaten portal.azure.com'a girdiğinizde otomatik bir "home" dizinindesiniz (sağ üstte GUID benzeri bir dizin görürsünüz). - Doğrudan App registration: üst arama çubuğuna "App registrations" yazıp açın (veya Microsoft Entra ID → App registrations) → + New registration → ad verin. Supported account types: ⚠️ "Accounts in any organizational directory (Multitenant) and personal Microsoft accounts" seçin (kişisel OneDrive için ŞART). ("not contained within any directory" uyarısını görmezden gelin; uygulama yine de çalışır.) Yalnızca App registration da "no access" derse ücretsiz gerçek bir dizin alın: Microsoft 365 Developer Program (aynı hesapla "Join now" →
xxxxx.onmicrosoft.comtenant'ı) → orada kaydı yapın. - Redirect URI (Web):
https://semagent.ai/api/connectors/oauth/microsoft/callback→ Register. - API permissions → Add a permission → Microsoft Graph → Delegated:
Files.Read.All+offline_accessekleyin. (Kişisel hesapta "Grant admin consent" gerekmez; iş/okul dizininde gerekebilir.) - Certificates & secrets → New client secret → değeri kopyalayın. Overview'dan Application (client) ID'yi ve (tek-kiracılı uygulamaysa) Directory (tenant) ID'yi not edin.
- Panelde bağlayın (tek-tık — önerilen): Veri Kaynakları → OneDrive → "Kendi OAuth uygulamanızla bağlanın" panelinde Client ID + Client secret girin; uygulamanız tek-kiracılıysa (yalnız kendi dizininiz) Azure Dizin (Tenant) ID alanına dizin kimliğinizi yazın (çok-kiracılı/kişisel için
commonbırakın) → "Kaydet ve Bağlan". SemAgent onay akışını sizin uygulamanızla koşar. İsteğe bağlı Klasör yolu ile bir alt klasörü sınırlayın. Metin dosyaları (txt, md, csv, json, html) indekslenir. (Alternatif: bir OAuth akışıyla ellerefresh_tokenüretip Refresh token + Client ID + Client secret alanlarına yapıştırabilirsiniz.)
OneNote
OneDrive ile aynı Azure uygulamasını kullanır; tek fark izinlerdir:
- Aynı App registration'ı kullanın (veya yeni oluşturun; redirect URI aynı:
.../oauth/microsoft/callback). - Microsoft Graph Delegated izinlerine
Notes.Read.All+offline_accessekleyin. - Veri Kaynakları → OneNote → "Kendi OAuth uygulamanızla bağlanın" panelinde Client ID + Client secret (tek-kiracılıysa Azure Dizin/Tenant ID) girip "Kaydet ve Bağlan"a basın (ya da elle Refresh token yapıştırın). Not defteri sayfaları metne çevrilip indekslenir.
Notion
İki yol: Integration token (en kolay, önerilen) veya tek-tık OAuth. Her ikisi de aynı panel alanına yazılır.
Integration token ile — adım adım:
- notion.so/profile/integrations (veya Settings → Connections → Develop or manage integrations) → New integration → Internal tipini seçip oluşturun. (app.notion.com'daki "Connections → Access token" veya "Personal access tokens" da geçerli bir API token'ı verir — herhangi biri olur.)
- Internal Integration Token'ı kopyalayın (
secret_…veyantn_…ile başlar). - Sayfayı paylaşın: indekslemek istediğiniz sayfayı/veritabanını Notion'da açın → sağ üst ••• → Connections → Connect to → [entegrasyonunuz]. ⚠️ Paylaşmadığınız sayfalar API'ye GÖRÜNMEZ — bağlantı "ok" görünse de 0 doküman gelir.
- Panelde token'ı Integration token alanına yapıştırın; tek bir veritabanını hedeflemek için URL'den Database ID girebilirsiniz → Sync.
Dropbox
Kendi Dropbox OAuth uygulamanızla tek-tık bağlanırsınız — Microsoft'taki dizin derdi burada yok.
- dropbox.com/developers/apps → Create app → Scoped access + Full Dropbox (veya yalnız bir uygulama klasörü için "App folder").
- Permissions sekmesi:
files.metadata.read+files.content.read+account_info.readişaretleyip Submit edin. - Settings sekmesi → OAuth 2 → Redirect URIs'e paneldeki Yönlendirme URI'sini (
https://semagent.ai/api/connectors/oauth/dropbox/callback) ekleyin. Aynı sayfadan App key ve App secret'ı alın. - SemAgent → Veri Kaynakları → Dropbox → "Kendi OAuth uygulamanızla bağlanın" panelinde App key'i Client ID, App secret'ı Client secret alanına girip "Kaydet ve Bağlan"a basın.
- İsteğe bağlı: yalnız bir klasörü indekslemek için Klasör yolu'na
/Klasöryazın (boş = tüm Dropbox). Metin, PDF ve Office (docx/xlsx/pptx) dosyaları metne çevrilip indekslenir.
Zendesk
OAuth uygulaması gerekmez — bir API token yeterli (Notion gibi). Varsayılan olarak Yardım Merkezi (Help Center) makaleleri indekslenir; destek botu için en değerli kaynak budur.
- Zendesk'te Admin Center → Apps and integrations → APIs → Zendesk API'yi açın.
- Token access'i etkinleştirin → Add API token → dönen token'ı kopyalayın (bir daha gösterilmez).
- SemAgent → Veri Kaynakları → Zendesk: Subdomain (
acme.zendesk.com'dakiacme), yönetici e-postanız ve API token → Kaydet ve bağla. - İsteğe bağlı İçerik türü:
articles(varsayılan) ·tickets·both. Destek kayıtlarını (ticket konu+açıklama) da indekslemek içinbothyazın.
Sorun giderme
Google: "Access blocked / redirect_uri_mismatch"
redirect_uri_mismatch(Error 400): OAuth uygulamanızın Authorized redirect URIs listesindehttps://semagent.ai/api/connectors/oauth/google/callbacktam olarak yok. Ekleyin (sonda eğik çizgi olmadan, http değil https). Bu hata hesaptan bağımsızdır — hangi hesabı seçerseniz seçin aynı çıkar; önce URI'yi düzeltin.- "Access blocked: app is being tested": Audience → Publishing status Testing iken bağlandığınız Google hesabı Test users'a eklenmemiş. Ekleyin ya da uygulamayı Publish edin.
Microsoft: "AADSTS50058 / AADSTS50020 / 401 — interaction required, account does not exist in tenant"
- ⚠️
AADSTS50058"Interaction required / cookies were not sent" (en sık): Bu bir çerez/oturum sorunudur, yetki değil. Neredeyse her zaman InPrivate/Gizli pencere veya katı izleme-önleme yüzünden olur (üçüncü-taraf çerezler engellenir). Çözüm: InPrivate'tan çıkın, NORMAL bir pencere açın; Edge'de Ayarlar → Çerezler ve site izinleri → İzleme önleme → "Dengeli" yapın (Katı değil) veya[*.]microsoftonline.com+[*.]azure.com'a çerez izni verin; portal.azure.com'a tam giriş yapın (akışı tamamlayın, "Ignore" demeyin). En garantili yol: aşağıdaki M365 Developer Program tenant'ı. - Bu hata, kişisel (live.com/Gmail tabanlı) hesabınızla size ait olmayan bir Azure uygulamasını (ör. Azure Portal'ın kendi app'i) açmaya çalıştığınızda çıkar. Çözüm: mevcut bir app'i açmayın; portal.azure.com → App registrations → New registration ile kendi kaydınızı oluşturun.
- Dizin oluştururken "You don't have access" (401):
#create/Microsoft.AzureActiveDirectoryile dizin oluşturmayı denemeyin — kişisel hesaplarda bu blade 401 verir ve gerekmez. Uygulamayı doğrudan App registrations → New registration ile, hesap tipi "Multitenant + personal Microsoft accounts" seçerek kaydedin (dizinsiz çalışır). SemAgent panelinde Azure Dizin (Tenant) ID'yicommonbırakın. - App registration da "no access" derse: ücretsiz gerçek bir tenant alın — Microsoft 365 Developer Program ("Join now" →
xxxxx.onmicrosoft.com, orada Global Admin olursunuz) → kaydı o tenant'ta yapın. Panelde yinecommonkalır (hesap tipi multitenant+personal olduğundan).
SemAgent