Sayfayı Yazdır | Pencereyi Kapat

yapay zekada belirtilen anahtar bulunamadı hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1055
Tarih: 04 Temmuz 2025 Saat 21:43
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: yapay zekada belirtilen anahtar bulunamadı hatası
Mesajı Yazan: Sudesigirci
Konu: yapay zekada belirtilen anahtar bulunamadı hatası
Mesaj Tarihi: 04 Temmuz 2025 Saat 13:56
Merhaba , koduma yapay zeka entegre ederken sohbet ekranı açılıyor fakat mesaj gönderdiğimde belirtilen anahtar bulunamadı diyor gemini apiyi enabled ettim api keyi mi açık duruma getirdim fakat aynı hatayı almaya devam ediyorum yardımlarınız için şimdiden teşekkür ederim
 var
  AnaForm: TclForm;
  SoruGirdi: TclProEdit;
  GonderButon: TClProButton;
  SohbetPaneli, GirdiPaneli: TclProPanel;
  MesajListesi: TclMemo;
  AnaYerlesim: TClLayout;
  BaslikEtiketi: TclLabel;
  Istek: TclRest;
  API_ANAHTARI, IstekGovdesi, GelenCevap: string;
  SesEfekti: TclMediaPlayer;
  Son5Mesaj: array[0..4] of string;
  MesajSayaci: Integer;

void IstekTamamlandi;
{
  GelenCevap = Clomosy.CLParseJSON(Istek.Response, 'candidates.0.content.parts.0.text');

  MesajListesi.Lines.Add('🤖 Yapay Zeka: ' + GelenCevap);
  MesajListesi.ScrollTo(0, MesajListesi.Lines.Count * MesajListesi.TextSettings.Font.Size, True);
  
}

void IstekOlustur(TemelURL, Govde: string);
{
  Istek = TclRest.Create;
  Istek.Accept = 'application/json';
  Istek.ContentType = 'application/json';
  Istek.Method = rmPOST;
  Istek.ConnectTimeOut = 30000;
  Istek.BaseURL = TemelURL;
  Istek.Body = Govde;
  Istek.OnCompleted = 'IstekTamamlandi';
  Istek.ExecuteAsync;
}

void GonderButonTiklandi;
var
  i, indeks: Integer;
  TamGirdi: String;
{
  if SoruGirdi.Text <> '' {
    MesajListesi.Lines.Add('👤 Sen: ' + SoruGirdi.Text);
    MesajListesi.ScrollTo(0, MesajListesi.Lines.Count * MesajListesi.TextSettings.Font.Size, True);

    indeks = MesajSayaci - ((MesajSayaci div 5) * 5);
    Son5Mesaj[indeks] = SoruGirdi.Text;
    Inc(MesajSayaci);

    TamGirdi = '';
    for (i = 0 to 4) {
      if Son5Mesaj <> '' {
        TamGirdi = TamGirdi + '{"text": "' + Son5Mesaj + '"},';
      }
    }

    IstekGovdesi = '{
      "contents": [
        {
          "parts": [
            ' + TamGirdi +
            '{"text": "' + SoruGirdi.Text + '"}
          ]
        }
      ]
    }';

    API_ANAHTARI = 'AIzaSyCRKKrTZUs2UVGWwpKCs9OWJq7QSurbISA';
    IstekOlustur(
      ' https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-pro:generateContent?key=" rel="nofollow - https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-pro:generateContent?key= ' + API_ANAHTARI,
      IstekGovdesi
    );

    SoruGirdi.Text = '';
  }
}

void GirdiPaneliniAyarla;
{
  GirdiPaneli = AnaForm.AddNewProPanel(AnaYerlesim, 'GirdiPaneli');
  GirdiPaneli.Align = AlBottom;
  GirdiPaneli.Height = 100;
  GirdiPaneli.Margins.Top = 5;
  GirdiPaneli.Margins.Bottom = 20;
  GirdiPaneli.Margins.Left = 10;
  GirdiPaneli.Margins.Right = 10;

  SoruGirdi = AnaForm.AddNewProEdit(GirdiPaneli, 'SoruGirdi', 'Bir soru sor...');
  SoruGirdi.Align = AlClient;
  SoruGirdi.Margins.Left = 10;
  SoruGirdi.Margins.Right = 10;
  SoruGirdi.Margins.Top = 10;
  SoruGirdi.Margins.Bottom = 10;
  SoruGirdi.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3bf5c0');
  SoruGirdi.clProSettings.IsRound = True;
  SoruGirdi.clProSettings.RoundHeight = 10;
  SoruGirdi.clProSettings.RoundWidth = 10;
  SoruGirdi.SetclProSettings(SoruGirdi.clProSettings);

  GonderButon = AnaForm.AddNewProButton(GirdiPaneli, 'GonderButon', 'Gönder');
  GonderButon.Align = AlRight;
  GonderButon.Width = GirdiPaneli.Width / 4;
  GonderButon.Margins.Bottom = 10;
  GonderButon.Margins.Top = 10;
  GonderButon.Margins.Right = 10;
  GonderButon.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1814F3');
  GonderButon.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  GonderButon.clProSettings.IsRound = True;
  GonderButon.clProSettings.RoundHeight = 10;
  GonderButon.clProSettings.RoundWidth = 10;
  GonderButon.SetclProSettings(GonderButon.clProSettings);

  AnaForm.AddNewEvent(GonderButon, tbeOnClick, 'GonderButonTiklandi');
}

void SohbetPaneliniAyarla;
{
  SohbetPaneli = AnaForm.AddNewProPanel(AnaYerlesim, 'SohbetPaneli');
  SohbetPaneli.Align = AlClient;
  SohbetPaneli.Margins.Right = 10;
  SohbetPaneli.Margins.Left = 10;
  SohbetPaneli.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#f7f7f7');
  SohbetPaneli.SetclProSettings(SohbetPaneli.clProSettings);

  MesajListesi = AnaForm.AddNewMemo(SohbetPaneli, 'MesajListesi', '');
  MesajListesi.Align = alClient;
  MesajListesi.ReadOnly = True;
  MesajListesi.Margins.Top = 20;
  MesajListesi.Margins.Left = 20;
  MesajListesi.Margins.Bottom = 20;
  MesajListesi.Margins.Right = 20;
  MesajListesi.TextSettings.Font.Size = 18;
  MesajListesi.TextSettings.WordWrap = True;
  MesajListesi.EnabledScroll = True;
}

void BasligiAyarla;
{
  BaslikEtiketi = AnaForm.AddNewLabel(AnaForm.LytTopBar, 'BaslikEtiketi', 'Bitki Asistanı (Yapay Zeka)');
  BaslikEtiketi.TextSettings.Font.Size = 20;
  BaslikEtiketi.Align = alLeft;
  BaslikEtiketi.Margins.Left = 14;
  BaslikEtiketi.Margins.Top = 10;
  BaslikEtiketi.Height = 65;
  BaslikEtiketi.Width = 259;
}

{
  MesajSayaci = 0;
  AnaForm = TclForm.Create(Self);
  AnaForm.BtnFormMenu.Visible = False;
  AnaForm.FormWaiting.Visible = False;

  BasligiAyarla;

  AnaYerlesim = AnaForm.AddNewLayout(AnaForm, 'AnaYerlesim');
  AnaYerlesim.Align = alClient;
  AnaYerlesim.Margins.Bottom = 10;
  AnaYerlesim.Margins.Top = 10;

  SohbetPaneliniAyarla;
  GirdiPaneliniAyarla;

  AnaForm.Run;
}




Cevaplar:
Mesajı Yazan: haletr
Mesaj Tarihi: 04 Temmuz 2025 Saat 14:42

Merhaba Sude,

Öncelikle,

Aşağıdaki gibi yazılan döngüde:

TamGirdi = '';
    for (i = 0 to 4) {
      if Son5Mesaj <> '' {
        TamGirdi = TamGirdi + '{"text": "' + Son5Mesaj + '"},';
      }
    }

Son5Mesaj bir dizi olduğundan, doğrudan bu şekilde kullanıldığında hata alıyordum. Ben de dizinin indekslerini kullanarak şu şekilde güncelledim:

TamGirdi = '';
for (i = 0 to 4) {
  if (Trim(Son5Mesaj) <> '') {
    TamGirdi = TamGirdi + '{"text": "' + Son5Mesaj + '"},';
  }
}

Bu haliyle düzgün çalıştı.

Bir diğer konu da kendi API anahtarımı kullandığımda yukarıdaki düzenlemeyle birlikte her şey sorunsuz ilerledi.

Hatanın şundan kaynaklandığını düşünüyorum: 

Gemini API anahtarını aldığın sayfada ( https://aistudio.google.com/apikey" rel="nofollow - https://aistudio.google.com/apikey ) en üstte yer alan model URL’sini tam olarak kopyaladığından ve bu URL’nin sonuna ?key ekleyerek kullandığından emin misin? Özellikle model endpoint’inin eksiksiz ve doğru olması önemli, aksi halde istek doğru modele gitmeyebiliyor.

İyi çalışmalar dilerim.



Mesajı Yazan: Sudesigirci
Mesaj Tarihi: 04 Temmuz 2025 Saat 15:12
Merhaba Hale öncelikle yardımcı olduğun için teşekkür ederim   
son5mesaj yazarak dizinin tamamını karşılaştırmaya çalışıyordum fakat doğrusu aşağıdaki gibi olmalıydı
  TamGirdi = '';
    for (i = 0 to 4) {
  if Son5Mesaj <> '' {
    TamGirdi = TamGirdi + '{"text": "' + Son5Mesaj + '"},';
  }
döngüsünü düzelttiğimde kodum sorunsuz bir şekilde çalıştı. 
Sorun içinde URL nin sonuna ?key ekleyerek kullandığımda bir hata almıyorum sana da yardımcı olması için cevaplamak istedim 
İyi çalışmalar dilerim.


Mesajı Yazan: Sudesigirci
Mesaj Tarihi: 04 Temmuz 2025 Saat 15:14
son5mesaj olmalıydı eksik yazmışım 



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net