AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi KI in eigene Anwendung integrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KI in eigene Anwendung integrieren

Ein Thema von Gruber_Hans_12345 · begonnen am 26. Jun 2024 · letzter Beitrag vom 1. Jul 2024
Antwort Antwort
Seite 3 von 4     123 4      
hanvas

Registriert seit: 28. Okt 2010
158 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: KI in eigene Anwendung integrieren

  Alt 27. Jun 2024, 19:25
* Oder die Firscherkunngs-KI erkannte viele der Fische nicht wirklich, sondern die Finger der Angler, wie sie den fisch hielten
Das waren aber nicht die Jungs von Refine [1]. Deren System funktionierte bei Fischen und bei Batterien recht gut, wenn auch nicht gut genug. Heute gibt es sie allerdings nicht mehr. Deren OBS 200 bzw. OBS 600 funktionierte technisch eigentlich recht gut, hat aber in der Praxis doch einige Nachteile gehabt und war nicht wirklich intelligent.

Wir wollten mal was ähnliches machen und haben uns das, soweit möglich auch patentieren lassen [2].

Herzstück war dabei eigentlich ein Stück Software welches aufgrund eines während des Sortierens aufgenommenen Bildes erkennen die Batteriechemie erkennen sollten. Also im wesentlichen die Unterscheidung zwischen Zink-Kohle, Alkali-Mangang, LiIon, NiCD, NiMH. Dazu haben wir uns zunächst einen Scanner aus Fischertechnik gebastelt [3][5], mit diesem gleichzeitig flache Bilder von einzelnen Batterien aufgenommen [4]. Das war die Grundlage für unser Trainingsmaterial.

Da es sich bei einer Batterie ja nur um einen zylindrischen Körper handelt, war es relativ einfach das so gewonnene flache Bild als Textur für eine künstliche Batterie zu verwenden, so wurden (dank Delphi und DelphiGL) aus einem flachen Bild, viele Bilder einer Batterie in unterschiedlichen Winkeln und Beleuchtungen. Das war unser (erstes) Trainingsmaterial.

Nach vielen Versuchen, unterschiedlichen Netzarchitekturen und einer Testmaschine haben wir zunächst eine Trefferquote von gut 65 % gehabt. Anschließend haben wir handverlesene Bilder mit den sortierten Batterien (also dem Ausgang unserer Maschine) dem Trainingsmaterial beigemixt. [6]

Nach etwa einem Jahr haben wir bei einem Durchgang haben wir eine Trefferquote von max. 72 % erreicht, wurde bei einem zweiten Durchgang die nicht erkannten Batterien nochmal klassifziert, dann konnten wir rund 79 % aller Batterien automatisch nach ihrer Chemie sortieren.

[1] https://www.youtube.com/watch?v=kp1TEkf_kyE
[2] https://www.freepatentsonline.com/DE102018116905A1.html
nachdem wir aber 2022 unsere Firma verkauft haben und uns dadurch der Marktzugang fehlt haben wir das Patent nicht weiter vervolgt bzw. auslaufen lassen.

[3] IMG_20240627_190045
[4] inp015.jpg

[5] Die Walzen unten drehen sich und dadurch dreht sich auch die Batterie. Oben sitzt eine ganz normale USB Camera, von der aber nur eine einzige Zeile je Bild (die oberste) verwendet wird. Die Umlaufzeit für eine vollständige Drehung ist vom Durchmesser der Batterie abhängig. Nach einem Durchlauf hat man - durch aneinanderfügen der einzelnen Zeilen, eine vollständig und an allen Stellen gleich ausgeleuchtetes, ausgerolltes Bild einer Batterie. Das haben wir für die damals ca. 4500 auf dem Markt erhältichen Batterien (mit gebrauchten Batterien) gemacht. Die Software zur Steuerung unseres Fischertechnik Scanners habe ich mit Delphi gemacht.

[6] l2015.jpg

Das Bild ist im laufenden Betrieb entstanden. Die Röhren und damit die Batterien vibrieren mit einer Frequenz von ca. 40 Hz.
Miniaturansicht angehängter Grafiken
img_20240627_190045.jpg   inp015.jpg   l1215.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.630 Beiträge
 
#22

AW: KI in eigene Anwendung integrieren

  Alt 27. Jun 2024, 20:09
Ich beschäftige mich nun auch seit geraumer Zeit mit LLMs, und sehe aktuell ChatGPT 4o als den Referenzstandard.
Schau Dir mal Anthropics Claude 3.5 Sonnet an. Auch sehr, sehr beeindruckend.

Und ja, kleinere Tasks funktionieren super, größere manchmal unzuverlässiger.
Aber ein Model kann ja auch aus einem großeren mehrere kleinere Machen, und die dann isoliert selber oder durch ein anderes Model bearbeiten lassen, die Teil-Ergebnisse wieder zusammenfassen, ggf. nochmal ein anderes Model drüber gucken lassen.

Oder die Teilaufgaben die nicht so ganz zuverlässig klappen lässt man 3 mal machen und kann dann mit einem anderen Prompt entweder das beste Ergebnis rauspicken oder aus den zwei besseren ein noch besseres zusammen fassen.

Da kommen wir dann in den Bereich der Agentensysteme, die mit unterschiedlichen Personas (im Prinzip der Prompt der dem Model sagt, wie es sich zu verhalten hat, also z.b. "Du bist ein Autor" oder "Du bist ein Lektor") zusammen an einem Problem arbeiten und sich gegenseitig challengen, verbessern und gemeinsam zu einem richtig, richtig guten Ergebnis kommen.

Nichts desto Trotz: Konkretes Beispiel E-Mails eines Online-Versandhandels abarbeiten. Die bekommen übers Wochenende zig Support E-Mails, viele sind automatisierte Stornos von z.B. Amazon und Ebay, aber auch einige Handgeschriebene "Brauch ich nicht mehr" Mails wenn das über den eigenen Shop ging - und das ganze unter hunderten "Falscher Artikel", "Kam defekt an", "War doch die falsche Farbe" etc. Mails. Aufgabe: Dort am Sonntag Abend die Stornos raussuchen und die Bestellung zumindest mal blockieren, so dass sie nicht am Montag Vormittag raus geht wenn der Support noch die Mails von Freitag Abend abarbeitet und noch gar nicht bei den Stornos von Sonntag Abend angekommen ist. Das zu automatisieren war eine konkrete Aufgabe. Für die immer gleich aussehenden Mails von Amazon und Ebay nimmt man dann aber besser doch eine Regex und kein LLM - ist billiger, schneller und zuverlässiger. Also nur weil man ein Model hat, ist es noch lange nicht die Lösung für alle Probleme.

Aber was gut funktioniert ist dann z.B. bei "Wo bleibt meine Sendung?"-Mails dann dem Model APIs als Tools zu geben die die Order finden und die Trackingnumber und den Versanddienstleister rausgeben, und dann auch Tools um den Status der Trackingnummer bei den Dienstleistern abzufragen, und aus diesem Ergebnis dann schon eine Antwortmail vorzuformulieren. Dann muss nur noch ein Mitarbeiter drüber gucken und absenden. Spart ziemlich viel Recherche-Zeit dort.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 06:44

Ich mache viele Experimente mit verschiedensten KI, lokal und online, aber mein Favorit ist und bleibt ChatGPT.
Hast Du ein praktisches "Hello World" für ein lokales LLM (Mit Delphi)

In Holland gab es dazu einen Vortrag, aber was nicht so klar wurde war, welche vor trainierte LLM man für was
runter laden muss.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.630 Beiträge
 
#24

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 07:48
Hast Du ein praktisches "Hello World" für ein lokales LLM (Mit Delphi)
Wie gesagt, lokale LLMs sind (aktuell) bei weitem nicht so intelligent wie gehostete.

Dennoch: Mit Ollama (https://ollama.com/) kannst Du viele LLMs lokal betreiben:

Phi3 in einer passenden Quantisierung die nicht zu langsam ist geht z.B. so:
Code:
ollama run phi3:3.8b-mini-instruct-4k-fp16
Dann kannst Du schonmal auf der Kommandozeile mit dem Model chatten.
Ollama hat auch eine web-api, die Du von anderen Programmen aus ansprechen kannst.

Dazu habe ich ein Delphi-UI gefunden: https://github.com/HuichanKIM/Ollama-Delphi-GUI
Da ich aber schon ewig kein Delphi mehr mache, kann ich Dir dazu nicht sagen, wie gut das wirklich ist.

Edit / Ergänzung:

Wenn ich das o.a. Phi3 mit folgender Frage befeuere:
Code:
(Invoke-WebRequest -method POST -Body '{"model":"phi3:3.8b-mini-instruct-4k-fp16", "prompt":"Why is the sky blue?", "stream": false}' -uri http://localhost:11434/api/generate ).Content | ConvertFrom-json
erhalte ich folgende Antwort:

Code:
model               : phi3:3.8b-mini-instruct-4k-fp16
created_at          : 28.06.2024 06:49:41
response            : The sky appears blue to us because of a phenomenon called Rayleigh scattering. Sunlight, which
                       contains all colors of light in its spectrum, travels through Earth's atmosphere and interacts
                       with molecules and small particles present there.

                       When sunlight reaches our atmosphere, it encounters tiny air molecules (like nitrogen and
                       oxygen) and other aerosols suspended in the air. These particles scatter short-wavelength
                       light, like blue and violet colors, more than they do long-wavelength light, such as red or
                       yellow.

                       However, our eyes are more sensitive to blue light (around 475 nanometers) compared to violet
                       light (which is shorter wavelength). Also, the Earth's atmosphere absorbs some of the sunlight
                       in the ultraviolet and near-ultraviolet region, which means there's less scattering for these
                       colors.

                       As a result, when we look up at the sky away from direct sources of light like the Sun, we
                       perceive it as blue due to the dominance of scattered blue light in all directions. When
                       sunlight passes through the Earth's atmosphere during dawn and dusk, shorter wavelengths (blue
                       and violet) scatter more than longer wavelengths (red and orange). This is why the sky appears
                       redder at these times.

                       It's also worth mentioning that under certain conditions, such as heavy pollution or volcanic
                       activity, the sky may not appear blue but take on other colors due to changes in aerosols
                       present in the atmosphere.
done                : True
done_reason         : stop
context             : {32010, 3750, 338, 278…}
total_duration      : 265333993700
load_duration       : 4458200
prompt_eval_count   : 10
prompt_eval_duration : 5340166000
eval_count          : 340
eval_duration       : 259982060000
Für das bisschen Text braucht es knapp unter viereinhalb Minuten.
Also wie gesagt, lokal ist aktuell noch nicht wirklich geil.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org

Geändert von Phoenix (28. Jun 2024 um 07:54 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.954 Beiträge
 
Delphi 12 Athens
 
#26

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 15:04
Schau Dir mal Anthropics Claude 3.5 Sonnet an. Auch sehr, sehr beeindruckend.
Ja kenne ich, hab ich aber noch nicht ganz so viel mit gemacht.
Spielt aber definitiv in der gleichen Liga, manche behaupten sogar etwas besser als ChatGPT.
Den Benchmarks traue ich aber nicht immer, da geht es oft nur um Nuancen.

Mir gefällt aber die ChatGPT Ausgabe und Formatierung viel besser, das ist bei Claude etwas unübersichtlicher,
ist aber jammern auf hohem Niveau.
Es gibt ein paar Unterschiede hier und da, aber auf jeden Fall sind die Ergebnisse ähnlich, auch Llama3 ist super,
also da muss man schon in die Details für die jeweilige Anwendung schauen.
Ich hatte den Eindruck Claude bekommt Produkt-Werbetexte besser hin (natürlicher, attraktiver) als GPT (etwas zu trocken), aber beide sind gut verwendbar.

Prompt entweder das beste Ergebnis rauspicken oder aus den zwei besseren ein noch besseres zusammen fassen.

Da kommen wir dann in den Bereich der Agentensysteme, die mit unterschiedlichen Personas (im Prinzip der Prompt der dem Model sagt, wie es sich zu verhalten hat, also z.b. "Du bist ein Autor" oder "Du bist ein Lektor") zusammen an einem Problem arbeiten und sich gegenseitig challengen, verbessern und gemeinsam zu einem richtig, richtig guten Ergebnis kommen.
Genau, Prompt-Engineering ist ein Thema für sich, damit kann man extrem viel herausholen.
Da meine ich, das viele Nutzer glauben mit einfachen, plumpen Fragen perfekte Antworten generieren zu müssen.
Das wage ich zu bezweifeln, wie man in den Wald hineinruft, so schallt es heraus.

Für die immer gleich aussehenden Mails von Amazon und Ebay nimmt man dann aber besser doch eine Regex und kein LLM - ist billiger, schneller und zuverlässiger. Also nur weil man ein Model hat, ist es noch lange nicht die Lösung für alle Probleme.
Ja, das haben wir ja alle die letzten 40 Jahre lang versucht, mit mäßigem Erfolg, siehe Cross-Sales Vorschläge o.ä.
Genau da denke ich, dass die KI ein bischen Extra-Gehirnschmalz reinbringen kann, auch wenn der RegEx mal wieder zusammenbricht, weil es gerade doch wieder etwas vom vorgesehenen Template abweicht.
Vielleicht ist eine Kombination aus beidem ideal, RegEx können die LLMs natürlich auch perfekt.

Hast Du ein praktisches "Hello World" für ein lokales LLM (Mit Delphi)

In Holland gab es dazu einen Vortrag, aber was nicht so klar wurde war, welche vor trainierte LLM man für was
runter laden muss.

Mavarik
Ich hatte auch mit Ollama experimentiert, aber man muss schon eine gute Nvidia-Karte dafür haben.
Das mit WebUI sieht am Ende genauso aus wie ChatGPT, nur das es offen ist und zig Modelle unterstützt.
Dazu überlege ich mir gerade einen Server mit GPU anzuschaffen, ist aber auch extrem teuer und hoher Verbrauch.
Die "Holland"-Lösung mit einer gehosteten GPU-Instanz hat was für sich, aber günstig ist das alles nicht.
(Deshalb bin ich momentan auch noch größtenteils bei ChatGPT).

Ein vielversprechendes Projekt wird womöglich llamafile von Mozilla, steckt aber noch in den Kinderschuhen
https://github.com/Mozilla-Ocho/llamafile
Das soll angeblich auch bessere Performance ohne teure GPU bieten, da bin ich aber noch nicht wiklich mit beschäftigt gewesen.

Als Modell hatte ich hauptsächlich mit Lama3 experimentiert, was man mit Ollama auch direkt einbinden kann.

Für Delphi sehe ich das jetzt für mich nicht unbedingt als Hauptanwendung, aber OK, ist auch sehr sinnvoll.

Den Hauptvorteil der lokalen LLMs sehe ich eher darin, dass man damit auch vertrauliche Daten und Dokumente analysieren kann.
Der Zugang über WebUI oder direkt per Python, alles was das Herz begehrt, es ist aber noch nicht auf dem Level von ChatGPT.
Im Moment gibt es aber quasi täglich neue Mitspieler, neue Modelle und neue Technologien, das kann immer nur besser werden.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.630 Beiträge
 
#27

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 15:55
Den Hauptvorteil der lokalen LLMs sehe ich eher darin, dass man damit auch vertrauliche Daten und Dokumente analysieren kann.
Da ist dann zum einen die Frage, wie vertraulich die Daten sind.
Wenn ich die aus einem Azure Storage runterlade, um sie dann lokal ans LLM zu geben und die Ergebnisse dann wieder in mein Cloud-RZ hochlade, kann ich auch gleich ein starkes LLM auf Azure mieten.

Sind die Daten in der Tat so vertraulich, dass sie unter gar keinen Umständen aus dem eigenen RZ raus dürfen, auf das dann auch etliche Security-Engineers 24/7 aufpassen (weil wenn man die nicht hat sind die Daten dort defakto nicht annähernd so sicher, wie man es sich vorstellt - und dann wäre eine Cloud definitiv der besser geschützte Platz), dann sollte ein kleiner A100 Cluster Preistechnisch auch aus der Portokasse bezahlbar sein

Andernfalls geht das zwar prinzipiell auch, aber dann muss man halt unter umständen seeeehr viel Geduld mitbringen, weil das durcharbeiten von vielen Tokens dann auch viel Zeit braucht.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.954 Beiträge
 
Delphi 12 Athens
 
#28

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 17:29
Naja, soooo vertraulich sind sie nun auch nicht, als dass man sie nicht in einer Cloud halten könnte.
Ich wollte nur den eigentlichen Vorteil der lokalen LLM erwähnen.
Mit den meisten Daten, selbsrt wenn es Kundendaten sind, hätte ich auch kein Problem das auf Cloud-Server zu hosten.
Die müssen dann halt nur DSGVO Konform sein, ehrlicherweise habe ich mir noch nicht die DSGVO Konformität von allen Anbietern unter die Lupe genommen.

Gefühlt würde ich sagen, Server in USA oder außerhalb EU, dann wird es wohl mit DSGVO schwierig.
Ist aber nur mein Bauchgefühl im Moment.

Ich arbeite immer nach dem Motto: Erstmal machen, dann schauen was man so darf und was nicht.

P.S.: Welche Portokasse meinst Du denn, ich such die gerade ...
https://www.leadergpu.com/?fltr_type...BwE#chose-best

Geändert von Rollo62 (28. Jun 2024 um 17:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: KI in eigene Anwendung integrieren

  Alt 28. Jun 2024, 22:06
Hast Du ein praktisches "Hello World" für ein lokales LLM (Mit Delphi)
Wie gesagt, lokale LLMs sind (aktuell) bei weitem nicht so intelligent wie gehostete.

Dennoch: Mit Ollama (https://ollama.com/) kannst Du viele LLMs lokal betreiben:
Das ist ja ein externe Software.

Ein LLM "Hello World" mit Delphi sieht für mich so aus:

Eine Delphi Unit - zur Not mit einer Komponente - Läd Daten eines LLM und kann dann ohne externe Resourcen die Frage(n) beantworten.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: KI in eigene Anwendung integrieren

  Alt 29. Jun 2024, 01:47
Eine Delphi Unit ...
siehe GetIt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 21:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz