AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ChatGPT - Wow! (Cron-Job)

Ein Thema von hschmid67 · begonnen am 3. Jul 2024 · letzter Beitrag vom 10. Jul 2024
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.176 Beiträge
 
Delphi 12 Athens
 
#1

AW: ChatGPT - Wow! (Cron-Job)

  Alt 3. Jul 2024, 19:02
Ich kannst nicht genau sagen, aber ich glaube ChatGPT 4o sollte kostenlos sein.
:https://openai.com/index/gpt-4o-and-more-tools-to-chatgpt-free/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: ChatGPT - Wow! (Cron-Job)

  Alt 3. Jul 2024, 20:14
Nicht, wenn es darum geht, die WebAPI zur automatischen Abfrage nutzen zu wollen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: ChatGPT - Wow! (Cron-Job)

  Alt 3. Jul 2024, 23:38
Ich lasse mittlerweile alle meine MySQL-Querys von Chat-GPT schreiben.

- Richtige Frage stellen
- original Tabellen und Feldbezeichnungen nennen
- Bedingungen benennen
- fertig

20 Zeilen mit Joins inner selects und alles drum und dran.

Natürlich ohne einen Schreibfehler oder eine vergessene Klammer.

Mavarik
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
337 Beiträge
 
Delphi 12 Athens
 
#4

AW: ChatGPT - Wow! (Cron-Job)

  Alt 4. Jul 2024, 08:09
- Richtige Frage stellen
...
Hab das Gefühl, da scheitert es bei den meisten. Ich kann auch nur positives berichten. Natürlich spukt die KI kein fertiges Programm aus und natürlich muss man die Ergebnisse kontrollieren, aber da setze ich einfach mal genug gesunden Menschenverstand voraus.
Was ich auch schon oft festgestellt habe, wenn man seine Frage etwas offener stellt und die KI dadurch nicht so stark einschränkt, kommen über die Antwort oft Ansätze die man sonst vielleicht nicht verfolgt hätte, bzw. auf die man vielleicht nicht gekommen wäre.

Ich gehe auch oft gerne hin und werfe eine fertige Funktion in ChatGPT und frag nochmal wie er den Code unter dem Aspekt von Lesbarkeit, Performance und Aufbau findet und ob es aus seiner Sicht was zu verbessern gibt. So zu sagen Pair-Programming mit der KI. Das kann richtig laune machen und man kann sich dadurch selbst ständig verbessern.

My 2 Cents.

vG
PJM
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.176 Beiträge
 
Delphi 12 Athens
 
#5

AW: ChatGPT - Wow! (Cron-Job)

  Alt 4. Jul 2024, 13:34
Was ich auch schon oft festgestellt habe, wenn man seine Frage etwas offener stellt und die KI dadurch nicht so stark einschränkt, kommen über die Antwort oft Ansätze die man sonst vielleicht nicht verfolgt hätte, bzw. auf die man vielleicht nicht gekommen wäre.
Und/Oder der Frage entsprechend viele Positiv-Beispiele dabeilegen, die exakt beschreiben, was genau man eigentlich haben will und in welchem Format.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
908 Beiträge
 
Delphi 12 Athens
 
#6

AW: ChatGPT - Wow! (Cron-Job)

  Alt 7. Jul 2024, 09:30
Ich habe ja in letzter Zeit öfter mal über KI gemeckert, besonders über Googles Bard bzw. jetzt Gemini. Aber Holladiwaldfee ... ChatGPT ist tatsächlich um Welten besser.

Da ich grade dabei bin, bei meiner Audio-Bibliothek auch Opus-Dateien zu unterstützen, habe ich für ein (bereits implementiertes) Teilproblem mal diese KIs befragt.

Mein Input: Kannst du mir eine Funktion in der Programmiersprache Delphi schreiben, die aus einer gegebenen Ogg-Datei die maximale absolute granule position ermittelt?

Gemini hat (mal wieder) irgendwelche nicht-existenten Klassen herbei-fantasiert und somit nutzlosen Code produziert.
Delphi-Quellcode:
unit OggGranulePosition;

interface
uses
  Windows,
  Messages,
  StdCtrls,
  ExtCtrls,
  OggVorbis;

implementation

function GetMaxGranulePosition(oggFileName: string): LongWord;
  var
    oggFile: TOggVorbisFile;
    oggStream: TOggVorbisStream;
    granulePosition: LongWord;
    granuleCount: LongWord;
    i: LongWord;
  begin
    oggFile := TOggVorbisFile.Create;
    try
      oggFile.Open(oggFileName, ofRead);

      oggStream := TOggVorbisStream.Create(oggFile);
      try
        granulePosition := 0;

        granuleCount := oggStream.Info.Packets;

        for i := 0 to granuleCount - 1 do
        begin
          granulePosition := Max(granulePosition, oggStream.Packets[i].Granulepos);
        end;

      finally
        oggStream.Free;
      end;

    finally
      oggFile.Free;
    end;

    Result := granulePosition;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Maximal absolute granule position: ' +
             IntToStr(GetMaxGranulePosition('C:\path\to\oggFile.ogg')));
end;

end.
ChatGPT liefert hingegen eine Struktur für den Ogg-Seitenheader, ermittelt nach einer Gültigkeits-Überprüfung daraus den gesuchten Wert. Dann wird korrekt die Größe der Seite berechnet, um sich seitenweise durch die Datei zu hangeln, um dann schließlich auf der letzten Seite den gesuchten Wert zu ermitteln.
Delphi-Quellcode:
program MaxGranulePosition;

uses
  Classes, SysUtils;

type
  TOggPageHeader = packed record
    CapturePattern: array[0..3] of AnsiChar;
    Version: Byte;
    HeaderType: Byte;
    GranulePosition: Int64;
    BitstreamSerialNumber: Cardinal;
    PageSequenceNumber: Cardinal;
    Checksum: Cardinal;
    PageSegments: Byte;
  end;

function ReadOggPageHeader(Stream: TStream; out Header: TOggPageHeader): Boolean;
begin
  Result := Stream.Read(Header, SizeOf(TOggPageHeader)) = SizeOf(TOggPageHeader);
end;

function GetMaxGranulePosition(const FileName: string): Int64;
var
  FileStream: TFileStream;
  OggPageHeader: TOggPageHeader;
  MaxGranulePosition: Int64;
  PageSegments: array of Byte;
  SegmentSize: Integer;
  I: Integer;
begin
  MaxGranulePosition := 0;
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    while FileStream.Position < FileStream.Size do
    begin
      if not ReadOggPageHeader(FileStream, OggPageHeader) then
        Break;

      if (OggPageHeader.CapturePattern <> 'OggS') then
        Break; // Invalid Ogg page

      if OggPageHeader.GranulePosition > MaxGranulePosition then
        MaxGranulePosition := OggPageHeader.GranulePosition;

      SetLength(PageSegments, OggPageHeader.PageSegments);
      FileStream.Read(PageSegments[0], OggPageHeader.PageSegments);

      SegmentSize := 0;
      for I := 0 to OggPageHeader.PageSegments - 1 do
        Inc(SegmentSize, PageSegments[I]);

      FileStream.Seek(SegmentSize, soFromCurrent);
    end;
  finally
    FileStream.Free;
  end;
  Result := MaxGranulePosition;
end;

var
  FileName: string;
  MaxGranule: Int64;
begin
  Write('Enter the Ogg file path: ');
  ReadLn(FileName);
  try
    MaxGranule := GetMaxGranulePosition(FileName);
    WriteLn('Max Granule Position: ', MaxGranule);
  except
    on E: Exception do
      WriteLn('Error: ', E.Message);
  end;
  ReadLn;
end.
Meine bisherigen Methode, vom Ende der Datei aus den letzten Ogg-Header zu suchen, ist zwar schneller, wenn die Seitengröße klein ist. Aber wenn die fehlschlägt (warum auch immer) ist das, was ChatGPT vorschlägt, die korrekte und sichere Variante.

Hat mich tatsächlich beeindruckt. Vor allem, weil das ja kein "Standard-Problem" ist, was ständig diskutiert wird.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.692 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: ChatGPT - Wow! (Cron-Job)

  Alt 7. Jul 2024, 09:49
Da fragt man sich dann natürlich, woher ChatGPT diesen Code geklaut hat, denn selbst produzieren kann es ja nicht.
Thomas Mueller
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.176 Beiträge
 
Delphi 12 Athens
 
#8

AW: ChatGPT - Wow! (Cron-Job)

  Alt 7. Jul 2024, 09:56
Und Claude Sonnet 3.5 kommt mit Deiner Frage wohl auch nicht sehr weit.
Das war auch auch ehrlicherweise nur das Standardmodell, weil ich noch keine Subscription habe.
Falls jemand vollenm Zugriff darauf hat, dann würde mich das Ergebnis auch interessieren.
Bisher ist ChatGPT 4o jedenfalls der klare Gewinner, aus meiner Sicht.

Delphi-Quellcode:
function GetMaxGranulePosition(const FileName: string): Int64;
var
  FileStream: TFileStream;
  Buffer: array[0..27] of Byte;
  PageHeader: array[0..3] of AnsiChar;
  GranulePosition: Int64;
  MaxGranulePosition: Int64;
begin
  MaxGranulePosition := 0;
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    while FileStream.Position < FileStream.Size do
    begin
      FileStream.ReadBuffer(PageHeader, 4);
      if PageHeader <> 'OggSthen
        raise Exception.Create('Ungültiges Ogg-Dateiformat');

      FileStream.ReadBuffer(Buffer, SizeOf(Buffer));
      GranulePosition := PInt64(@Buffer[6])^;

      if GranulePosition > MaxGranulePosition then
        MaxGranulePosition := GranulePosition;

      // Zum nächsten Ogg-Page springen
      FileStream.Seek(PCardinal(@Buffer[22])^ + 27, soFromCurrent);
    end;
  finally
    FileStream.Free;
  end;
  Result := MaxGranulePosition;
end;
Interessehalber habe ich den Prompt auch nochmal hier eingegeben, bei ChatGPT, dann kommt das raus.
Ähnlich, aber nicht exakt gleich. Kannst Du ja mal vergleichen, sieht jedenfalls deutlich strukturierter aus als alles andere.


Hier ist eine Delphi-Funktion, die die maximale absolute Granule-Position aus einer gegebenen Ogg-Datei extrahiert:
Delphi-Quellcode:
unit OggGranuleExtractor;

interface

uses
  Classes, SysUtils;

function GetMaxGranulePosition(const FileName: string): Int64;

implementation

type
  TOggPageHeader = packed record
    CapturePattern: array[0..3] of AnsiChar; // "OggS"
    Version: Byte;
    HeaderType: Byte;
    GranulePosition: Int64;
    BitstreamSerialNumber: Cardinal;
    PageSequenceNumber: Cardinal;
    Checksum: Cardinal;
    PageSegments: Byte;
  end;

function ReadOggPageHeader(Stream: TStream; out Header: TOggPageHeader): Boolean;
begin
  Result := Stream.Read(Header, SizeOf(TOggPageHeader)) = SizeOf(TOggPageHeader);
  if Result then
  begin
    Result := Header.CapturePattern = 'OggS';
    if not Result then
      Stream.Seek(-SizeOf(TOggPageHeader) + 1, soCurrent); // Synchronize to the next potential page start
  end;
end;

function GetMaxGranulePosition(const FileName: string): Int64;
var
  FileStream: TFileStream;
  OggHeader: TOggPageHeader;
  MaxGranulePos: Int64;
begin
  Result := -1;
  MaxGranulePos := -1;

  try
    FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
    try
      while FileStream.Position < FileStream.Size do
      begin
        if ReadOggPageHeader(FileStream, OggHeader) then
        begin
          if OggHeader.GranulePosition > MaxGranulePos then
            MaxGranulePos := OggHeader.GranulePosition;

          // Skip page segments
          FileStream.Seek(OggHeader.PageSegments, soCurrent);
        end
        else
          Break; // No more valid headers
      end;
      Result := MaxGranulePos;
    finally
      FileStream.Free;
    end;
  except
    on E: Exception do
      Writeln('Error: ', E.Message);
  end;
end;

end.
Erklärung der Funktion:

TOggPageHeader: Eine Struktur, die den Header eines Ogg-Pakets repräsentiert.
ReadOggPageHeader: Eine Hilfsfunktion, die einen Ogg-Page-Header aus einem Stream liest und überprüft, ob das Capture-Muster ("OggS") korrekt ist.
GetMaxGranulePosition: Die Hauptfunktion, die die Ogg-Datei öffnet, durch die Pakete iteriert und die maximale Granule-Position ermittelt.

Schritte zur Verwendung:

Speichere den obigen Code in eine Delphi-Unit, z.B. OggGranuleExtractor.pas.
Verwende die GetMaxGranulePosition-Funktion, um die maximale absolute Granule-Position einer Ogg-Datei zu ermitteln:



Delphi-Quellcode:
uses
  OggGranuleExtractor, SysUtils;

var
  MaxGranulePos: Int64;
begin
  try
    MaxGranulePos := GetMaxGranulePosition('path_to_your_ogg_file.ogg');
    Writeln('Maximale Granule-Position: ', MaxGranulePos);
  except
    on E: Exception do
      Writeln('Fehler: ', E.Message);
  end;
end.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.176 Beiträge
 
Delphi 12 Athens
 
#9

AW: ChatGPT - Wow! (Cron-Job)

  Alt 4. Jul 2024, 06:59
Nicht, wenn es darum geht, die WebAPI zur automatischen Abfrage nutzen zu wollen
Ja, aber der Playground mit CopyAndPaste scheint mir aktuell immer qualitativ im Ergebnis noch etwas besser zu sein,
in der Bezahlvariante.
Vermutlich benutzt OpenAI da einen optimierten Session-Cache, den man sonst irgendwie selber nachbilden muss.

Lange Zeit war im Playground GPT4 und im WebAPI aber nur der schwächere GPT3.5, kann sein dass dies jetzt anderes ist, es ändert sich ja gefühlt wöchentlich irgendwas

- Richtige Frage stellen
- original Tabellen und Feldbezeichnungen nennen
- Bedingungen benennen
- fertig
Im Playground kann man dazu sehr spezialisierte GPTs, optimiert für den jeweiligen Zweck genau bestimmen.
Da reicht es dann schon nur die Roh-Daten zu schicken mit einer kleinen Anweisung, den Rest macht er immer gleich und präzise.
Ist aber leider Handarbeit und so nicht im API vorhanden, trotzdem viel schneller als alles andere.

Geändert von Rollo62 ( 4. Jul 2024 um 07:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.692 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: ChatGPT - Wow! (Cron-Job)

  Alt 4. Jul 2024, 07:50
Ich kannst nicht genau sagen, aber ich glaube ChatGPT 4o sollte kostenlos sein.
:https://openai.com/index/gpt-4o-and-more-tools-to-chatgpt-free/
Der Link ist kaputt. Richtig wäre:
https://openai.com/index/gpt-4o-and-...-chatgpt-free/
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz