Ana içeriğe geç

İş Görüşmesi Kullanım Senaryosundan Yapay Zeka Sistemi Oluşturma

Yakın zamanda, akıllı belge işleme ve otomasyonla ilgili pratik bir kullanım durumunu tartıştığımız bir iş görüşmesini geçtim. Bu blog dizisinde, böyle bir sistemi ne kadar iyi tasarlayabileceğimi ve ilgili araç ve yazılımları entegre edebileceğimi değerlendirmek için bu kullanım senaryosunun önemli kısımlarını uygulamaya çalışacağım.

Kullanım Örneği

Bize aşağıdaki senaryo veriliyor:

  • Verileri almak için çoğunlukla PDF formatında Zoho CRM/Email kullanıyoruz.
  • Bu belgelerin içeriğini ayrıştırmamız gerekiyor.
  • Son olarak, kullanıcıların belgeleri sorgulamasına ve İş Zekası (BI) görevlerini otomatikleştirmesine olanak tanımak için RAG (Retrieval-Augmented Generation) kullanarak ajansal bir yapay zeka sistemi oluşturmayı hedefliyoruz.

Yol Haritası

Bölüm 1 – Verileri Alma (Zoho API)

Bölüm 2 – Verileri Ayrıştırma (LlamaIndex)

Bölüm 3 – Yapay Zeka Aracısı Oluşturun (LangChain + RAG)


Bölüm 1 – Zoho API Aracılığıyla Veri Alma

Başlamak için Zoho entegrasyonunu test etmek için özel bir alan adı oluşturdum. Zoho API ile kimlik doğrulama, OAuth 2.0 aracılığıyla gerçekleştirilir.

1. Adım: OAuth Kimlik Bilgilerini Oluşturun

Zoho OAuth Request Docs adresindeki kılavuzu takip ettim ve ilk önce bana Client ID ve Client Secret sağlayan bir Server-based Application oluşturdum.

Yetki kodunu istemek için:

https://accounts.zoho.eu/oauth/v2/auth?
scope=ZohoMail.messages.READ,ZohoMail.accounts.READ&
client_id=1000.xxxx&
response_type=code&
access_type=offline&
redirect_uri=https://yourdomain/oauth/callback

Bu şuraya yönlendirir:

https://yourdomain/oauth/callback?
code=1000.yyyy.zzzz&
location=eu&
accounts-server=https%3A%2F%2Faccounts.zoho.eu

2. Adım: Access Token Alın

Bunu çalıştırın:

curl --request POST \
  --url "https://accounts.zoho.eu/oauth/v2/token" \
  --data "grant_type=authorization_code" \
  --data "client_id=1000.xxxx" \
  --data "client_secret=your_client_secret" \
  --data "redirect_uri=https://yourdomain/oauth/callback" \
  --data "code=1000.yyyy.zzzz"

Not:your_client_secret'i değiştirmeyi unutmayın.

Örnek Yanıt:

{
  "access_token": "1000.ttt",
  "refresh_token": "1000.uuu",
  "scope": "ZohoMail.messages.READ ZohoMail.accounts.READ",
  "api_domain": "https://www.zohoapis.eu",
  "token_type": "Bearer",
  "expires_in": 3600
}

3. Adım: Account ID Alın

Mesajlarınıza/postalarınıza erişmek için Zoho Mail hesap kimliğinize ihtiyacınız var:

curl --request GET \
  --url https://mail.zoho.eu/api/accounts \
  --header "Authorization: Zoho-oauthtoken 1000.ttt"

Not: Token izinleri ZohoMail.accounts.READ'i içermiyorsa bu bir hata döndürebilir.

4. Adım: E-postaları Alın

Hesap kimliğini aldıktan sonra:

curl --request GET \
  --url "https://mail.zoho.eu/api/accounts/youraccountid/messages/view?limit=10" \
  --header "Authorization: Zoho-oauthtoken 1000.ttt"

Not: youraccountid'i gerçek hesap kimliğinizle değiştirmeyi unutmayın.

Örnek Yanıt:

{
  "status": {
    "code": 200,
    "description": "success"
  },
  "data": [
    {
      "summary": "Hey MC, Welcome 🙏 Mahmut ÇAVDAR...",
      "subject": "Re: Test Email",
      "fromAddress": "mahmutcvdr@gmail.com",
      "hasAttachment": "0",
      "folderId":"7192274xxxx000002014",
      "messageId":"17525962xx222005600",
      ....
    }
  ]
}

Ek yoksa "hasAttachment": "0". Bir ek varsa meta verilerini alabilirsiniz:

Adım 5: Eklerin Bilgilerini Alın

FolderId ve MessageId'i aldıktan sonra:

curl "https://mail.zoho.eu/api/accounts/youraccountid/folders/7192274xxxx000002014/messages/17525962xx222005600/attachmentinfo?includeInline=true" \
-X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization:Zoho-oauthtoken 1000.ttt"

Örnek Yanıt:

{
  "status": { "code": 200, "description": "success" },
  "data": {
    "attachments": [
      {
        "attachmentName": "CV_Cavdar.pdf",
        "attachmentId": "139719xxx010000"
      }
    ]
  }
}

Adım 6: Eki İndirin

attachmentId'i aldıktan sonra:

curl "https://mail.zoho.eu/api/accounts/youraccountid/folders/7192274xxxx000002014/messages/17525962xx222005600/attachments/139719xxx010000" \
-X GET \
-H "Accept: application/octet-stream" \
-H "Content-Type: application/json" \
-H "Authorization:Zoho-oauthtoken 1000.ttt" 
-o cv.pdf

Ve işte - ekleriniz!

Ve de Zoho API belgelerinde bir sorun buldum. this page adresindeki örnek yanlış; "E-posta Eki İçeriğini Al" yerine "E-posta Eki Bilgisini Al" örneğini gösteriyor.

Yanlış örnek:

curl "https://mail.zoho.com/api/accounts/12345678/folders/9000000002014/messages/1710915488416100001/attachmentinfo" \
-X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization:Zoho-oauthtoken *****"

Doğru Örnek:

curl "https://mail.zoho.com/api/accounts/12345678/folders/9000000002014/messages/1710915488416100001/attachments/139712110853010000" \
-X GET \
-H "Accept: application/octet-stream" \
-H "Content-Type: application/json" \
-H "Authorization:Zoho-oauthtoken *****"

Hata bildirildi burada.


Sonraki Adımlar

2.Bölümde, PDF dosyalarını ayrıştırmak ve içeriklerini sonraki işlemler için yapılandırmak için LlamaIndex kullanacağım. Muhtemelen bunu başlangıç ​​noktası olarak kullanacağım sample invoice dataset.

3.Bölümde, alınan içerik üzerinde kullanıcı sorgularını çalıştırabilecek ve temel BI otomasyon görevlerini destekleyebilecek aracılı bir sistem oluşturmak için LangChain'yi getireceğim.