{"id":7464,"date":"2024-12-17T18:30:00","date_gmt":"2024-12-17T17:30:00","guid":{"rendered":"https:\/\/haimagazine.com\/?p=7464"},"modified":"2025-06-26T11:09:13","modified_gmt":"2025-06-26T09:09:13","slug":"bielik-lokalnie-praktyczne-wdrozenie-malych-modeli-jezykowych","status":"publish","type":"post","link":"https:\/\/haimagazine.com\/pl\/hai-magazine\/hai-magazine-3\/bielik-lokalnie-praktyczne-wdrozenie-malych-modeli-jezykowych\/","title":{"rendered":"Bielik lokalnie \u2013 praktyczne wdro\u017cenie ma\u0142ych modeli j\u0119zykowych"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Pochlebnych opinii nie brakowa\u0142o. Czy na produkcji te\u017c doda nam skrzyde\u0142? Jak uruchomi\u0107 go ca\u0142kowicie lokalnie i sprawdzi\u0107 w zastosowaniach biznesowych? I co to w og\u00f3le s\u0105 ma\u0142e modele j\u0119zykowe? Zanim jednak przejdziemy do kodowania, om\u00f3wimy teori\u0119 ma\u0142ych modeli j\u0119zykowych (SLM) i zastanowimy si\u0119, dlaczego w niekt\u00f3rych przypadkach \u201emniej\u201d mo\u017ce oznacza\u0107 \u201ewi\u0119cej\u201d.<\/p><p class=\"wp-block-paragraph\"><strong>Du\u017ce modele j\u0119zykowe, takie jak GPT, Gemini PRO czy Claude Sonnet<\/strong>, szybko zyska\u0142y popularno\u015b\u0107 w biznesie dzi\u0119ki prostocie ich integracji \u2013 wystarczy kilka linijek kodu i dost\u0119p do p\u0142atnego API, by zacz\u0105\u0107 korzysta\u0107 z potencja\u0142u tych pot\u0119\u017cnych narz\u0119dzi. Jednak w zastosowaniach biznesowych, takich jak analiza korespondencji z klientami, generowanie odpowiedzi na e-maile czy zaawansowane wnioskowanie na podstawie za\u0142\u0105cznik\u00f3w, wykorzystuje si\u0119 je wci\u0105\u017c nadzwyczaj rzadko. Dlaczego? Zamkni\u0119tymi, komercyjnymi modelami trudniej zarz\u0105dza\u0107 \u2013 ich wydajno\u015b\u0107 i szybko\u015b\u0107 mog\u0105 si\u0119 gwa\u0142townie zmienia\u0107, a przetwarzanie danych w chmurze bywa problematyczne lub <strong>wr\u0119cz niemo\u017cliwe<\/strong>, gdy na szali k\u0142adziemy ochron\u0119 danych wra\u017cliwych, takich jak tajemnica bankowa czy dane medyczne. Remedium na te bol\u0105czki okazuj\u0105 si\u0119 tzw. ma\u0142e modele j\u0119zykowe (SLM, ang.&nbsp;<em>small language model<\/em>) \u2013 przy czym ich \u201ema\u0142o\u015b\u0107\u201d jest relatywna, bo to wci\u0105\u017c ca\u0142kiem okaza\u0142e modele, posiadaj\u0105ce oko\u0142o 10 miliard\u00f3w parametr\u00f3w. Cho\u0107 nie stworz\u0105 sp\u00f3jnych i przekonuj\u0105cych dzie\u0142 literackich, do zastosowa\u0144 biznesowych nadaj\u0105 si\u0119 idealnie: mo\u017cna uruchomi\u0107 je lokalnie, dostosowa\u0107 do konkretnych potrzeb, kontrolowa\u0107 oraz optymalizowa\u0107. To modele, kt\u00f3re s\u0105 w pe\u0142ni nasz\u0105 w\u0142asno\u015bci\u0105, bezpieczne, stabilne.&nbsp;<strong>Bielik<\/strong>, model o stricte polskim rodowodzie, w\u0142a\u015bnie do tej grupy modeli nale\u017cy.<\/p><h2 class=\"wp-block-heading\"><strong>Uruchomienie modelu lokalnie<\/strong><\/h2><p class=\"wp-block-paragraph\"><br>Jak mo\u017cna si\u0119 domy\u015bli\u0107, Bielik \u2013 podobnie jak inne modele typu SLM \u2013 jest dost\u0119pny na portalu Hugging Face. Na profilu dostawcy, jakim jest spo\u0142eczno\u015b\u0107 SpeakLeash, kt\u00f3ra stworzy\u0142a Bielika (<a href=\"https:\/\/huggingface.co\/speakleash\" target=\"_blank\" rel=\"noopener\">https:\/\/huggingface.co\/speakleash<\/a>), znajdziemy jednak dziesi\u0105tki r\u00f3\u017cnych modeli. Jak wybra\u0107 odpowiedni? Do zada\u0144 biznesowych najlepiej sprawdzi si\u0119 model instrukcyjny lub konwersacyjny. W zale\u017cno\u015bci od dostawcy mo\u017cna je znale\u017a\u0107 po s\u0142owach kluczowych w nazwie, takich jak \u201einstruct\u201d, lub w tagach, na przyk\u0142ad \u201econversational\u201d. W przypadku Bielika znajdziemy taki model pod adresem:<br><strong><a>https:\/\/huggingface.co\/speakleash\/Bielik-11B-v2.3-Instruct<\/a><\/strong><\/p><h2 class=\"wp-block-heading\"><strong>Czy mo\u017cemy ju\u017c zainstalowa\u0107 model?<\/strong><\/h2><p class=\"wp-block-paragraph\"><br>Je\u015bli posiadasz kart\u0119 GPU z co najmniej 40 GB pami\u0119ci vRAM \u2013 tak! Bielik ma 11 miliard\u00f3w parametr\u00f3w, a jego wagi s\u0105 dost\u0119pne w precyzji 16 bit\u00f3w, wi\u0119c do optymalnego dzia\u0142ania wymaga zar\u00f3wno odpowiedniej mocy obliczeniowej GPU, jak i du\u017cej pami\u0119ci. Je\u015bli jednak Tw\u00f3j sprz\u0119t nie spe\u0142nia tych wymaga\u0144, nie martw si\u0119. Dostawcy, w tym tak\u017ce&nbsp;<strong>SpeakLeash<\/strong>, udost\u0119pniaj\u0105 alternatywne wersje modeli instrukcyjnych zoptymalizowanych pod k\u0105tem ni\u017cszych zasob\u00f3w, takich jak&nbsp;<strong>GGUF<\/strong>,&nbsp;<strong>4-bit<\/strong>,&nbsp;<strong>8FP<\/strong>&nbsp;czy&nbsp;<strong>GPTQ<\/strong>.<\/p><p class=\"wp-block-paragraph\">S\u0105 to tzw.&nbsp;<strong>modele skwantowane<\/strong>&nbsp;(skompresowane), kt\u00f3re charakteryzuj\u0105 si\u0119 ni\u017csz\u0105 precyzj\u0105 wag \u2013 na przyk\u0142ad 2, 4 lub 8 bit\u00f3w. Dzi\u0119ki temu modele te wymagaj\u0105 mniejszych zasob\u00f3w, takich jak pami\u0119\u0107 vRAM i moc obliczeniowa GPU, co czyni je bardziej dost\u0119pnymi na sprz\u0119cie o ograniczonych zasobach. Ale nic za darmo \u2013 kwantyzacja mo\u017ce wp\u0142ywa\u0107 na efektywno\u015b\u0107 i jako\u015b\u0107 generowanych odpowiedzi.<\/p><p class=\"wp-block-paragraph\">Jak bardzo? Zgodnie z tzw.&nbsp;<strong>prawem Ethana Mollicka<\/strong>&nbsp;najlepszym podej\u015bciem jest po prostu regularne testowanie tych modeli, aby okre\u015bli\u0107, kt\u00f3re wersje zapewniaj\u0105 najlepszy kompromis mi\u0119dzy wydajno\u015bci\u0105 a jako\u015bci\u0105 odpowiedzi.<\/p><p class=\"wp-block-paragraph\"><strong>Prawo Ethana Mollicka<\/strong><br>\u201eW niekt\u00f3rych zadaniach sztuczna inteligencja jest niezwykle skuteczna, a w innych zupe\u0142nie zawodzi lub pope\u0142nia drobne b\u0142\u0119dy. Je\u015bli jednak nie korzystasz z AI regularnie, trudno b\u0119dzie ci odr\u00f3\u017cni\u0107 jedne sytuacje od drugich\u201d.<\/p><p class=\"wp-block-paragraph\"><strong>Gdy mamy ju\u017c wybran\u0105 wersj\u0119 modelu, mo\u017cemy przyst\u0105pi\u0107 do dzia\u0142ania.<\/strong><br>Zacznijmy od najprostszej metody \u2013 wystarczy, \u017ce na stronie modelu, np.&nbsp;<strong><a>https:\/\/huggingface.co\/speakleash\/Bielik-11B-v2.3-Instruct-4bit-ov<\/a><\/strong>, klikniesz przycisk&nbsp;<strong>\u201eUse this model\u201d<\/strong>&nbsp;po prawej stronie i wybierzesz opcj\u0119&nbsp;<strong>\u201eTransformers\u201d<\/strong>, a otrzymasz kod do uruchomienia modelu. Przedtem trzeba jednak zainstalowa\u0107 odpowiednie biblioteki, takie jak&nbsp;<strong>Transformers<\/strong>, oraz jedn\u0105 z bibliotek obliczeniowych \u2013&nbsp;<strong>PyTorch<\/strong>&nbsp;lub&nbsp;<strong>TensorFlow<\/strong>.<\/p><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"622\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00-1024x622.png\" alt=\"\" class=\"wp-image-7467\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00-1024x622.png 1024w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00-300x182.png 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00-768x467.png 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00-600x365.png 600w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.25.00.png 1372w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><p class=\"wp-block-paragraph\"><strong>Ta metoda, cho\u0107 prosta, nie jest jednak optymalna i nie rekomendujemy jej.<\/strong><br>Po pierwsze, wymaga pewnego do\u015bwiadczenia z bibliotekami, takimi jak PyTorch lub TensorFlow, oraz umiej\u0119tno\u015bci ich konfiguracji w zale\u017cno\u015bci od posiadanych zasob\u00f3w, czyli obecno\u015bci GPU lub jego braku. Po drugie, kod uruchamiaj\u0105cy model trzeba b\u0119dzie doda\u0107 do ka\u017cdego skryptu lub aplikacji, kt\u00f3ra z niego korzysta. Po trzecie, metoda ta nie oferuje \u017cadnych opcji optymalizacji ani zarz\u0105dzania pami\u0119ci\u0105. To wszystko s\u0105 problemy, kt\u00f3re kto\u015b ju\u017c rozwi\u0105za\u0142 za nas, ale nie pozwoli nam w te rozwi\u0105zania ingerowa\u0107.<\/p><p class=\"wp-block-paragraph\">O wiele wygodniej by\u0142oby mie\u0107 gotowe API, podobne do tego, kt\u00f3re udost\u0119pnia OpenAI, i po prostu po\u0142\u0105czy\u0107 si\u0119 z modelem.&nbsp;<strong>Dobra wiadomo\u015b\u0107: mamy to!<\/strong>&nbsp;Wybieramy ponownie opcj\u0119&nbsp;<strong>\u201eUse this model\u201d<\/strong>&nbsp;na stronie modelu, a nast\u0119pnie sprawdzamy dost\u0119pne integracje \u2013 opr\u00f3cz \u201eTransformers\u201d znajdziemy tam r\u00f3wnie\u017c bardziej zaawansowane pakiety, takie jak&nbsp;<strong>vLLM<\/strong>&nbsp;(polecam zostawi\u0107 na p\u00f3\u017aniej) oraz&nbsp;<strong>Ollama<\/strong>&nbsp;(dla wersji modelu&nbsp;<strong>GGUF<\/strong>).<\/p><p class=\"wp-block-paragraph\">Na pocz\u0105tek przygody z lokaln\u0105 wersj\u0105 Bielika rekomendujemy w\u0142a\u015bnie&nbsp;<strong>Ollam\u0119<\/strong>. Je\u015bli dopiero zaczynacie przygod\u0119 z pakietem Ollama, najpierw wejd\u017acie na stron\u0119&nbsp;<strong><a>https:\/\/ollama.com\/download<\/a><\/strong>&nbsp;i zainstalujcie odpowiednie oprogramowanie dla swojego systemu operacyjnego. Nast\u0119pnie macie dwie opcje: mo\u017cecie wyszuka\u0107 odpowiedni model bezpo\u015brednio na stronie Ollamy lub wr\u00f3ci\u0107 do Hugging Face i tam wybra\u0107 opcj\u0119&nbsp;<strong>\u201eUse this model\u201d<\/strong>&nbsp;przy modelach, kt\u00f3re maj\u0105 w nazwie ci\u0105g&nbsp;<strong>\u201eGGUF\u201d<\/strong>.<\/p><p class=\"wp-block-paragraph\"><strong>Zalecamy jednak korzystanie z modeli dost\u0119pnych bezpo\u015brednio przez Ollam\u0119<\/strong>&nbsp;\u2013 jest ich czasem wi\u0119cej, poniewa\u017c s\u0105 tak\u017ce przygotowywane przez niezale\u017cnych programist\u00f3w, a same karty modeli s\u0105 lepiej opisane i dostosowane do pracy z tym pakietem.<\/p><p class=\"wp-block-paragraph\">Na stronie&nbsp;<strong>ollama.com<\/strong>&nbsp;wyszukujemy model, wpisuj\u0105c fraz\u0119&nbsp;<strong>\u201eBielik\u201d<\/strong>&nbsp;\u2013 i wybieramy na przyk\u0142ad najnowsz\u0105 wersj\u0119 2.3:<br><strong><a href=\"https:\/\/ollama.com\/SpeakLeash\/bielik-11b-v2.3-instruct\" target=\"_blank\" rel=\"noopener\">https:\/\/ollama.com\/SpeakLeash\/bielik-11b-v2.3-instruct<\/a><\/strong><\/p><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"817\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46-1024x817.png\" alt=\"\" class=\"wp-image-7469\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46-1024x817.png 1024w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46-300x239.png 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46-768x613.png 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46-600x479.png 600w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.26.46.png 1464w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><p class=\"wp-block-paragraph\">Nast\u0119pnie rozwijamy list\u0119 dost\u0119pnych modeli i klikamy&nbsp;<strong>\u201eView all\u201d<\/strong>. Na dodatkowym ekranie zobaczymy liczb\u0119 pobra\u0144 modelu, precyzj\u0119 wag oraz jego rozmiar w GB. Wybieramy pierwszy model do eksperyment\u00f3w \u2013&nbsp;<strong>ja rekomenduj\u0119, by zacz\u0105\u0107 od Q8<\/strong>&nbsp;i na nim sprawdzi\u0107, jak dzia\u0142a na naszym komputerze. Po wyborze wracamy do g\u0142\u00f3wnej karty, gdzie wystarczy skopiowa\u0107 komend\u0119&nbsp;<strong>\u201eollama run \u2026\u201d<\/strong>:<\/p><p class=\"wp-block-paragraph\">ollama run SpeakLeash\/bielik-11b-v2.3-instruct:Q8_0<\/p><p class=\"wp-block-paragraph\"><strong>Je\u015bli macie ju\u017c zainstalowan\u0105 Ollam\u0119<\/strong>, oto komenda do uruchomienia modelu&nbsp;<strong>Bielik<\/strong>&nbsp;na Waszym komputerze. Jak \u0142atwo si\u0119 domy\u015bli\u0107, wystarczy zmieni\u0107 ostatni cz\u0142on komendy, aby uruchamia\u0107 inne modele Bielika, a nawet inne modele dost\u0119pne w Ollamie.<\/p><p class=\"wp-block-paragraph\">Dodatkowo&nbsp;<strong>Ollama<\/strong>&nbsp;oferuje wiele innych przydatnych komend, takich jak&nbsp;<strong>ps<\/strong>,&nbsp;<strong>list<\/strong>&nbsp;czy&nbsp;<strong>show<\/strong>, kt\u00f3re opisali\u015bmy w poni\u017cszej tabeli.<\/p><p class=\"wp-block-paragraph\">Popularne komendy aplikacji Ollama<\/p><p class=\"wp-block-paragraph\">serve \u2013 Uruchom Ollam\u0119.<\/p><p class=\"wp-block-paragraph\">show \u2013 Wy\u015bwietl informacje o modelu.<\/p><p class=\"wp-block-paragraph\">run \u2013 Uruchom model.<\/p><p class=\"wp-block-paragraph\">pull \u2013 Pobierz model z rejestru.<\/p><p class=\"wp-block-paragraph\">list \u2013 Wy\u015bwietl list\u0119 dost\u0119pnych modeli.<\/p><p class=\"wp-block-paragraph\">ps \u2013 Wy\u015bwietl list\u0119 uruchomionych modeli.<\/p><p class=\"wp-block-paragraph\">cp \u2013 Skopiuj model.<\/p><p class=\"wp-block-paragraph\">rm \u2013 Usu\u0144 model.<\/p><p class=\"wp-block-paragraph\"><\/p><p class=\"wp-block-paragraph\"><strong>Uruchamiamy model za pomoc\u0105 komendy run<\/strong>, a aplikacja pobierze go i zapisze na komputerze. Dodatkowo&nbsp;<strong>Ollama<\/strong>uruchomi w tle serwer, dzi\u0119ki czemu komputer zacznie oferowa\u0107&nbsp;<strong>API<\/strong>&nbsp;zgodne z protoko\u0142em&nbsp;<strong>OpenAI<\/strong>. Od tej pory mo\u017cecie tworzy\u0107 skrypty i systemy wykorzystuj\u0105ce lokalnie model Bielik. To oznacza, \u017ce mo\u017cecie przetwarza\u0107 nawet najbardziej poufne informacje bez obaw \u2013 wszystko b\u0119dzie przetwarzane wy\u0142\u0105cznie lokalnie na Waszym komputerze.<\/p><p class=\"wp-block-paragraph\">Po uruchomieniu mo\u017cemy rozpocz\u0105\u0107 czatowanie z Bielikiem bezpo\u015brednio z terminala. Pami\u0119tajmy jednak, \u017ce prawdziwa moc Bielika ujawnia si\u0119, gdy po\u0142\u0105czymy si\u0119 z nim za pomoc\u0105 skryptu, przeka\u017cemy mu dokumenty do analizy, uprzednio dostosowawszy parametry (np.&nbsp;<strong>temperatur\u0119 generowania odpowiedzi<\/strong>). Niemniej ju\u017c teraz mo\u017cemy poczu\u0107 ma\u0142y przedsmak jego mo\u017cliwo\u015bci.<\/p><p class=\"wp-block-paragraph\"><strong>Czas na pierwsze prompty<\/strong><br>Bielik ma ju\u017c uwite gniazdo na naszym dysku. Przed rozpocz\u0119ciem kodowania warto sprawdzi\u0107 kilka komend Ollamy:<\/p><ul class=\"wp-block-list\"><li><strong>ollama list<\/strong>&nbsp;\u2013 aby zobaczy\u0107, jakie modele mamy pobrane,<\/li>\n\n<li><strong>ollama ps<\/strong>&nbsp;\u2013 aby sprawdzi\u0107, kt\u00f3re modele s\u0105 aktywne.<\/li><\/ul><p class=\"wp-block-paragraph\">W razie problem\u00f3w lub po restarcie mo\u017cemy ponownie uruchomi\u0107 serwer Ollamy za pomoc\u0105 komendy&nbsp;<strong>ollama serve<\/strong>.<\/p><p class=\"wp-block-paragraph\">Nasz lokalny serwer Ollamy obs\u0142uguje protok\u00f3\u0142&nbsp;<strong>OpenAI<\/strong>, wi\u0119c wystarczy zainstalowa\u0107 pakiet&nbsp;<strong>OpenAI<\/strong>, aby po\u0142\u0105czy\u0107 si\u0119 z modelem Bielik. Je\u015bli dodatkowo chcemy por\u00f3wna\u0107 wyniki z modelami&nbsp;<strong>GPT<\/strong>&nbsp;lub prze\u0142\u0105czy\u0107 skrypt na inny model, r\u00f3wnie\u017c jest to mo\u017cliwe. Maj\u0105c skonfigurowane wirtualne \u015brodowisko, mo\u017cemy zainstalowa\u0107 ten pakiet w tradycyjny spos\u00f3b: pip install OpenAI<\/p><p class=\"wp-block-paragraph\">I ju\u017c mo\u017cna przej\u015b\u0107 do odpytywania modelu.&nbsp;<strong>Nasz pierwszy skrypt nie b\u0119dzie zbyt zaawansowany<\/strong>&nbsp;\u2013 poprosimy Bielika o wygenerowanie przyk\u0142adowego maila biznesowego w okre\u015blonym stylu, aby sprawdzi\u0107, czy wszystko dzia\u0142a poprawnie.<\/p><p class=\"wp-block-paragraph\">from openai import OpenAI<\/p><p class=\"wp-block-paragraph\">client = OpenAI(<br>base_url=&#8217;http:\/\/localhost:11434\/v1&#8242;,<br>api_key=&#8217;ollama&#8217;,<br>)<\/p><p class=\"wp-block-paragraph\">prompt = (<br>&#8222;Wygeneruj tre\u015b\u0107 maila do klienta, kt\u00f3ry w uprzejmy, dyplomatyczny &#8222;<br>&#8222;i przyjazny spos\u00f3b przypomina o zaleg\u0142ej p\u0142atno\u015bci. Faktura, o kt\u00f3rej &#8222;<br>&#8222;mowa, to nr 01\/01\/2024 na kwot\u0119 1200 z\u0142 netto. Ton maila powinien by\u0107 &#8222;<br>&#8222;kurtuazyjny i wyrozumia\u0142y, zach\u0119caj\u0105cy do uregulowania p\u0142atno\u015bci bez &#8222;<br>&#8222;wywo\u0142ywania dyskomfortu.&#8221;<br>)<\/p><p class=\"wp-block-paragraph\">response = client.chat.completions.create(<br>model=&#8221;SpeakLeash\/bielik-11b-v2.3-instruct:Q8_0&#8243;,<br>messages=[<br>{&#8222;role&#8221;: &#8222;user&#8221;, &#8222;content&#8221;: prompt},<br>]<br>)<\/p><p class=\"wp-block-paragraph\">print(response.choices[0].message.content)<\/p><p class=\"wp-block-paragraph\">Wystarczy zamieni\u0107&nbsp;<strong>api_key<\/strong>&nbsp;na klucz uzyskany z naszego konta&nbsp;<strong>OpenAI<\/strong>&nbsp;(np.&nbsp;<code>model=\"gpt-4o\"<\/code>), a tak\u017ce usun\u0105\u0107&nbsp;<strong>base_url<\/strong>, aby skrypt korzysta\u0142 bezpo\u015brednio z modeli OpenAI. Istnieje r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 u\u017cycia innych modeli, np. z&nbsp;<strong>Ollamy<\/strong>, lub po\u0142\u0105czenia si\u0119 z innym dostawc\u0105 modeli, poniewa\u017c wi\u0119kszo\u015b\u0107 z nich obs\u0142uguje ju\u017c protok\u00f3\u0142 OpenAI.<\/p><p class=\"wp-block-paragraph\"><strong>API jest elastyczne<\/strong>, wi\u0119c mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z nim za pomoc\u0105 r\u00f3\u017cnych technologii, takich jak&nbsp;<strong>JAVA<\/strong>,&nbsp;<strong>JavaScript<\/strong>&nbsp;czy tradycyjny&nbsp;<strong>curl<\/strong>.<\/p><pre class=\"wp-block-code\"><code>\ncurl http:\/\/localhost:11434\/v1\/chat\/completions \\\n     -H \"Content-Type: application\/json\" \\\n     -d '{\n           \"model\": \"llama2\",\n           \"messages\": &#91;\n             {\n               \"role\": \"user\",\n               \"content\": \"Cze\u015b\u0107!\"\n             }\n           ]\n         }'\n<\/code><\/pre><p class=\"wp-block-paragraph\">Je\u015bli wszystko zadzia\u0142a\u0142o i otrzymali\u015bmy e-mail w oczekiwanym stylu,&nbsp;<strong>czas nieco skomplikowa\u0107 skrypt<\/strong>. Po pierwsze, mo\u017cemy doda\u0107 tzw.&nbsp;<strong>prompt systemowy<\/strong>, czyli og\u00f3lne wytyczne dla modelu. Jest to szczeg\u00f3lnie przydatne, gdy tworzymy aplikacj\u0119, w kt\u00f3rej u\u017cytkownicy korzystaj\u0105 z&nbsp;<strong>Bielika<\/strong>&nbsp;i chcemy przekaza\u0107 zestaw zasad dotycz\u0105cych stylu lub tonu odpowiedzi, np. \u201eB\u0105d\u017a przyjaznym asystentem, nie odpowiadaj na pytania\u2026\u201d. Dodanie takiego promptu mo\u017ce r\u00f3wnie\u017c pom\u00f3c zmniejszy\u0107 rozmiar g\u0142\u00f3wnego promptu.<\/p><p class=\"wp-block-paragraph\">Kolejnym krokiem jest&nbsp;<strong>dostosowanie parametr\u00f3w wywo\u0142ania<\/strong>, takich jak&nbsp;<strong>temperatura<\/strong>&nbsp;i&nbsp;<strong>maksymalna liczba token\u00f3w<\/strong>. Temperatura (<strong>temperature<\/strong>) kontroluje kreatywno\u015b\u0107 modelu, a&nbsp;<strong>max_tokens<\/strong>&nbsp;ogranicza d\u0142ugo\u015b\u0107 odpowiedzi, co pozwala lepiej dostosowa\u0107 model do naszych potrzeb.<\/p><p class=\"wp-block-paragraph\">Oczywi\u015bcie dost\u0119pnych jest wi\u0119cej parametr\u00f3w, takich jak&nbsp;<strong>top_p<\/strong>,&nbsp;<strong>frequency_penalty<\/strong>&nbsp;czy&nbsp;<strong>presence_penalty<\/strong>&nbsp;\u2013 szczeg\u00f3\u0142owe informacje o ich dzia\u0142aniu mo\u017cna znale\u017a\u0107 w dokumentacji na stronie modelu&nbsp;<strong>Bielik<\/strong>.<\/p><p class=\"wp-block-paragraph\">from openai import OpenAI<\/p><p class=\"wp-block-paragraph\">client = OpenAI(<br>base_url=&#8217;http:\/\/localhost:11434\/v1&#8242;,<br>api_key=&#8217;ollama&#8217;,<br>)<\/p><p class=\"wp-block-paragraph\">prompt = (<br>&#8222;Wygeneruj tre\u015b\u0107 maila do klienta, kt\u00f3ry przypomina o zaleg\u0142ej p\u0142atno\u015bci. &#8222;<br>&#8222;Faktura, o kt\u00f3rej mowa, to nr 01\/01\/2024 na kwot\u0119 1200 z\u0142 netto.\\n&#8221;<br>&#8222;DANE D\u0141U\u017bNIKA:\\n&#8221;<br>&#8222;Imi\u0119 i nazwisko: Jan Kowalski\\n&#8221;<br>&#8222;Adres: ul. Klonowa 1, 00-001 Warszawa\\n&#8221;<br>&#8222;NIP: 123-456-78-90\\n&#8221;<br>&#8222;Telefon: 123-456-789\\n&#8221;<br>&#8222;DANE WIERZYCIELA:\\n&#8221;<br>&#8222;Firma: Firma XYZ\\n&#8221;<br>&#8222;Adres: ul. D\u0119bowa 2, 00-002 Warszawa\\n&#8221;<br>&#8222;NIP: 987-654-32-10\\n&#8221;<br>&#8222;Telefon: 987-654-321\\n&#8221;<br>)<\/p><p class=\"wp-block-paragraph\">system_prompt = (<br>&#8222;B\u0105d\u017a bardzo uprzejmy i wyrozumia\u0142y, ale jednocze\u015bnie stanowczy. &#8222;<br>&#8222;Jednak zawsze profesjonalny i kurtuazyjny.&#8221;<br>)<\/p><p class=\"wp-block-paragraph\">response = client.chat.completions.create(<br>model=&#8221;SpeakLeash\/bielik-11b-v2.3-instruct:Q8_0&#8243;,<br>messages=[<br>{&#8222;role&#8221;: &#8222;system&#8221;, &#8222;content&#8221;: system_prompt},<br>{&#8222;role&#8221;: &#8222;user&#8221;, &#8222;content&#8221;: prompt},<br>],<br>temperature=0.4,<br>max_tokens=1000,<br>)<\/p><p class=\"wp-block-paragraph\">print(response.choices[0].message.content)<\/p><p class=\"wp-block-paragraph\"><strong>Poniewa\u017c Bielik dzia\u0142a w \u015brodowisku lokalnym<\/strong>, mo\u017cemy bez obaw doda\u0107 dane adresowe klienta. Dodatkowo zwi\u0119kszy\u0142em warto\u015b\u0107 parametru&nbsp;<strong>temperatura<\/strong>, aby e-mail by\u0142 bardziej zr\u00f3\u017cnicowany i mia\u0142 nieco swobodniejszy ton.<\/p><p class=\"wp-block-paragraph\">Oczywi\u015bcie u\u017cyty prompt jest tylko przyk\u0142adowy. Gdyby\u015bmy chcieli stworzy\u0107 rzeczywistego asystenta do windykacji, warto by\u0142oby przekaza\u0107 pe\u0142ny zestaw wytycznych dotycz\u0105cych tonu e-maili, zale\u017cnie na przyk\u0142ad od liczby ponagle\u0144. Dobrze by\u0142oby tak\u017ce do\u0142\u0105czy\u0107 dodatkowe informacje, takie jak numer konta, odsetki, szczeg\u00f3\u0142y dotycz\u0105ce us\u0142ugi i inne istotne dane.<\/p><p class=\"wp-block-paragraph\"><strong>Bielik<\/strong>, nasz&nbsp;<strong>SLM<\/strong>, \u015bwietnie radzi sobie z analiz\u0105 i strukturyzacj\u0105 tekst\u00f3w, wi\u0119c zobaczmy, jak mo\u017ce to wygl\u0105da\u0107 w praktyce. Wyobra\u017amy sobie przyk\u0142adow\u0105 opini\u0119 z internetu (pisownia oryginalna):<\/p><p class=\"wp-block-paragraph\">No wi\u0119c, lokata w tym banku spoko, wszystko szybko za\u0142atwione, ale mogliby da\u0107 lepsze oprocentowanie, bo teraz to troch\u0119 lipa. Z kontem bywa r\u00f3\u017cnie, czasem jakie\u015b dziwne op\u0142aty wyskakuj\u0105 i cz\u0142owiek si\u0119 zastanawia, sk\u0105d to si\u0119 bierze. Mogliby to jako\u015b pro\u015bciej ogarn\u0105\u0107, \u017ceby cz\u0142owiek nie musia\u0142 si\u0119 g\u0142owi\u0107.<\/p><p class=\"wp-block-paragraph\">A aplikacja? No, tu jest dobrze, bo wszystko mo\u017cna za\u0142atwi\u0107 z telefonu, ale czasem si\u0119 przywiesza. I serio, przyda\u0142by si\u0119&nbsp;<strong>dark mode<\/strong>, bo po nocy to oczy wypala. Ale za to&nbsp;<strong>chat z pracownikiem to sztos<\/strong>&nbsp;\u2013 wszystko w 5 sekund za\u0142atwione, jakby cz\u0142owiek gada\u0142 z kumplem. Og\u00f3lnie bank okej, ale mogliby par\u0119 rzeczy poprawi\u0107, \u017ceby by\u0142o jeszcze lepiej.<\/p><p class=\"wp-block-paragraph\"><strong>Elo! Wroclaw Lover<\/strong><\/p><p class=\"wp-block-paragraph\"><strong>Analiza wyd\u017awi\u0119ku (ang. sentiment)?<\/strong>&nbsp;Tak, ale z&nbsp;<strong>Bielikiem<\/strong>&nbsp;(i og\u00f3lnie z SLM-ami) mo\u017ce wygl\u0105da\u0107 to zupe\u0142nie inaczej. Po pierwsze, przed analiz\u0105 mo\u017cemy podzieli\u0107 opini\u0119 na&nbsp;<strong>w\u0105tki, produkty czy segmenty<\/strong>, poniewa\u017c klient mo\u017ce pochwali\u0107 jedn\u0105 cz\u0119\u015b\u0107 us\u0142ugi, a inn\u0105 skrytykowa\u0107. Po drugie, Bielik dobrze radzi sobie z wykrywaniem&nbsp;<strong>sarkazmu, ironii, liter\u00f3wek i j\u0119zyka potocznego<\/strong>, co czyni go odpornym na wypowiedzi niejednoznaczne. Po trzecie, Bielik nie jest rozliczany&nbsp;<strong>per zu\u017cyty token<\/strong>&nbsp;\u2013 mo\u017cemy przetwarza\u0107 setki tysi\u0119cy komentarzy i opinii bez ogranicze\u0144.<\/p><p class=\"wp-block-paragraph\">Dodatkowo mo\u017cna pokusi\u0107 si\u0119 o analiz\u0119 \u201emi\u0119dzy wierszami\u201d, np. pseudonim&nbsp;<strong>\u201eWroclaw Lover\u201d<\/strong>&nbsp;mo\u017ce sugerowa\u0107, \u017ce mamy do czynienia z klientem z&nbsp;<strong>Wroc\u0142awia<\/strong>.<\/p><p class=\"wp-block-paragraph\"><strong>Kod to jedno, ale r\u00f3wnie wa\u017cne jest przygotowanie odpowiedniego promptu:<\/strong><\/p><p class=\"wp-block-paragraph\">Przeanalizuj dok\u0142adnie opini\u0119 o produkcie bankowym, aby zidentyfikowa\u0107 wszystkie opinie oraz pomys\u0142y na temat produkt\u00f3w lub us\u0142ug bankowych. Sklasyfikuj je jako pozytywne, negatywne lub neutralne oraz okre\u015bl, czy jest to opinia, czy pomys\u0142 na usprawnienie. Ka\u017cdy element opinii powinien mie\u0107 fragment maila oraz skorygowan\u0105 wersj\u0119 merytoryczn\u0105, pozbawion\u0105 j\u0119zyka potocznego.<\/p><p class=\"wp-block-paragraph\">Zidentyfikuj r\u00f3wnie\u017c wszystkie dost\u0119pne cechy klienta, takie jak p\u0142e\u0107, miejsce zamieszkania, wiek, wykszta\u0142cenie itp., na podstawie po\u015brednich i bezpo\u015brednich informacji w tek\u015bcie.<\/p><p class=\"wp-block-paragraph\">W skr\u00f3cie, chcemy, aby Bielik wyekstrahowa\u0142 wszelkie opinie, pomys\u0142y i sugestie, a nast\u0119pnie odpowiednio je sklasyfikowa\u0142. Kolejnym krokiem jest stworzenie wersji merytorycznej, pozbawionej j\u0119zyka potocznego. Na koniec niech spr\u00f3buje wyci\u0105gn\u0105\u0107 jakiekolwiek dodatkowe informacje o autorze. Temperatur\u0119 ustawili\u015bmy na 0,0, aby uzyska\u0107 maksymalnie sp\u00f3jne wyniki.<\/p><p class=\"wp-block-paragraph\">from openai import OpenAI<\/p><p class=\"wp-block-paragraph\">client = OpenAI(<br>base_url=&#8217;http:\/\/localhost:11434\/v1&#8242;,<br>api_key=&#8217;ollama&#8217;,<br>)<\/p><p class=\"wp-block-paragraph\">prompt = (<br>&#8222;Przeanalizuj dok\u0142adnie opini\u0119 o produkcie bankowym, aby zidentyfikowa\u0107 wszystkie opinie oraz &#8222;<br>&#8222;pomys\u0142y na temat produkt\u00f3w lub us\u0142ug bankowych. Sklasyfikuj je jako pozytywne, negatywne lub neutralne &#8222;<br>&#8222;oraz okre\u015bl, czy jest to opinia, czy pomys\u0142 na usprawnienie. Ka\u017cdy element opinii powinien mie\u0107 fragment maila &#8222;<br>&#8222;oraz skorygowan\u0105 wersj\u0119 merytoryczn\u0105 bez j\u0119zyka potocznego. Zidentyfikuj r\u00f3wnie\u017c wszystkie dost\u0119pne cechy klienta, &#8222;<br>&#8222;takie jak p\u0142e\u0107, miejsce zamieszkania, wiek, wykszta\u0142cenie itp., na podstawie po\u015brednich i bezpo\u015brednich informacji w tek\u015bcie.&#8221;<br>)<\/p><p class=\"wp-block-paragraph\">text = (<br>&#8222;OPINIA Z INTERNETU:\\n&#8221;<br>&#8222;No wiec, lokata w tym banku spoko, wszystko szybko zalatwione, ale mogliby dac lepsze oprocentowanie, bo teraz &#8222;<br>&#8222;to troche lipa. Z kontem bywa roznie czasem jakies dziwne oplaty wyskakuja i czlowiek sie zastanawia, skad to sie bierze. &#8222;<br>&#8222;Mogliby to jakos prosciej ogarnac, zeby czlowiek nie musial sie glowic. A aplikacja? No, tu jest dobrze, bo wszystko mozna &#8222;<br>&#8222;zalatwic z telefonu, ale czasem sie przywiesza. I serio, przydalby sie dark mode, bo po nocy to oczy wypala. Ale za to chat &#8222;<br>&#8222;z pracownikiem to sztos wszystko w 5 sekund zalatwione, jakby czlowiek gadal z kumplem. Ogolnie bank okej ale mogliby pare &#8222;<br>&#8222;rzeczy poprawic zeby bylo jeszcze lepiej.\\nElo! Wroclaw Lover&#8221;<br>)<\/p><p class=\"wp-block-paragraph\">response = client.chat.completions.create(<br>model=&#8221;SpeakLeash\/bielik-11b-v2.3-instruct:Q8_0&#8243;,<br>messages=[<br>{&#8222;role&#8221;: &#8222;user&#8221;, &#8222;content&#8221;: prompt + &#8222;\\n&#8221; + text}<br>],<br>temperature=0.0,<br>max_tokens=1000,<br>)<\/p><p class=\"wp-block-paragraph\">print(response.choices[0].message.content)<\/p><h2 class=\"wp-block-heading\">Wynik w formacie JSON, prosz\u0119<\/h2><p class=\"wp-block-paragraph\">Wynik jest \u015bwietny (przynajmniej pod wzgl\u0119dem merytorycznym). Jednak dalsza analiza, zapisywanie w bazie danych czy eksport do Excela mo\u017ce nastr\u0119cza\u0107 trudno\u015bci w przypadku danych tekstowych.<\/p><p class=\"wp-block-paragraph\">**Opinie:**<\/p><p class=\"wp-block-paragraph\">1. Pozytywna: &#8222;lokata w tym banku spoko, wszystko<\/p><p class=\"wp-block-paragraph\">szybko zalatwione&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Lokata w tym banku jest<\/p><p class=\"wp-block-paragraph\">wygodna i proces jej otwarcia przebiega sprawnie.<\/p><p class=\"wp-block-paragraph\">2. Negatywna: &#8222;mogliby dac lepsze oprocentowanie,<\/p><p class=\"wp-block-paragraph\">bo teraz to troche lipa&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Oprocentowanie lokaty<\/p><p class=\"wp-block-paragraph\">mog\u0142oby by\u0107 korzystniejsze, poniewa\u017c obecne warunki<\/p><p class=\"wp-block-paragraph\">nie s\u0105 zadowalaj\u0105ce.<\/p><p class=\"wp-block-paragraph\">3. Negatywna: &#8222;czasem jakies dziwne oplaty wyskaku-<\/p><p class=\"wp-block-paragraph\">ja i czlowiek sie zastanawia, skad to sie bierze&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Czasami pojawiaj\u0105 si\u0119<\/p><p class=\"wp-block-paragraph\">nieoczekiwane op\u0142aty, co powoduje konsternacj\u0119<\/p><p class=\"wp-block-paragraph\">klienta.<\/p><p class=\"wp-block-paragraph\">4. Pomys\u0142 na usprawnienie: &#8222;mogliby to jakos pro-<\/p><p class=\"wp-block-paragraph\">sciej ogarnac, zeby czlowiek nie musial sie glowic&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Bank powinien upro\u015bci\u0107<\/p><p class=\"wp-block-paragraph\">system op\u0142at i oprocentowania, aby klient m\u00f3g\u0142<\/p><p class=\"wp-block-paragraph\">\u0142atwiej zrozumie\u0107 swoje koszty i korzy\u015bci.<\/p><p class=\"wp-block-paragraph\">5. Pozytywna: &#8222;aplikacja? No, tu jest dobrze,<\/p><p class=\"wp-block-paragraph\">bo wszystko mozna zalatwic z telefonu&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Aplikacja mobilna banku<\/p><p class=\"wp-block-paragraph\">jest wygodnym narz\u0119dziem do zarz\u0105dzania finansami.<\/p><p class=\"wp-block-paragraph\">6. Negatywna: &#8222;ale czasem sie przywiesza&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Aplikacja czasami<\/p><p class=\"wp-block-paragraph\">dzia\u0142a nieprawid\u0142owo, co powoduje problemy<\/p><p class=\"wp-block-paragraph\">z jej u\u017cywaniem.<\/p><p class=\"wp-block-paragraph\">7. Pomys\u0142 na usprawnienie: &#8222;przydalby sie dark<\/p><p class=\"wp-block-paragraph\">mode, bo po nocy to oczy wypala&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Wprowadzenie trybu<\/p><p class=\"wp-block-paragraph\">ciemnego (dark mode) by\u0142oby korzystne dla<\/p><p class=\"wp-block-paragraph\">u\u017cytkownik\u00f3w korzystaj\u0105cych z aplikacji w nocy.<\/p><p class=\"wp-block-paragraph\">8. Pozytywna: &#8222;chat z pracownikiem to sztos<\/p><p class=\"wp-block-paragraph\">wszystko w 5 sekund zalatwione, jakby czlowiek<\/p><p class=\"wp-block-paragraph\">gadal z kumplem&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Czat z pracownikiem banku<\/p><p class=\"wp-block-paragraph\">jest bardzo efektywny i przyjazny, co sprawia,<\/p><p class=\"wp-block-paragraph\">\u017ce komunikacja przebiega szybko i bezproblemowo.<\/p><p class=\"wp-block-paragraph\">9. Neutralna: &#8222;Ogolnie bank okej ale mogliby pare<\/p><p class=\"wp-block-paragraph\">rzeczy poprawic zeby bylo jeszcze lepiej&#8221;<\/p><p class=\"wp-block-paragraph\">&#8211; Skorygowana wersja: Bank jest og\u00f3lnie dobry,<\/p><p class=\"wp-block-paragraph\">ale istnieje potencja\u0142 do wprowadzenia kilku<\/p><p class=\"wp-block-paragraph\">ulepsze\u0144, aby us\u0142ugi by\u0142y jeszcze bardziej satys-<\/p><p class=\"wp-block-paragraph\">fakcjonuj\u0105ce.<\/p><p class=\"wp-block-paragraph\">**Cechy Klienta:**<\/p><p class=\"wp-block-paragraph\">&#8211; P\u0142e\u0107: nieokre\u015blona (u\u017cywane s\u0105 formy neutralne)<\/p><p class=\"wp-block-paragraph\">&#8211; Miejsce zamieszkania: Wroc\u0142aw (Wroclaw Lover)<\/p><p class=\"wp-block-paragraph\">&#8211; Wiek: nieokre\u015blony<\/p><p class=\"wp-block-paragraph\">&#8211; Wykszta\u0142cenie: nieokre\u015blon<\/p><p class=\"wp-block-paragraph\">bSpr\u00f3bujmy wi\u0119c poprosi\u0107 o wynik w formacie JSON \u2013 dzi\u0119ki temu \u0142atwiej b\u0119dzie zaimportowa\u0107 dane do Excela, innego modelu czy bazy danych. SLM \u015bwietnie radz\u0105 sobie z takimi strukturami, jednak warto dok\u0142adnie zdefiniowa\u0107 ich formalny uk\u0142ad. Polecam u\u017cycie tzw.&nbsp;<strong>JSON Schema<\/strong>&nbsp;(<a href=\"https:\/\/json-schema.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/json-schema.org\/<\/a>) \u2013 formalnego opisu obiekt\u00f3w, w kt\u00f3rym mo\u017cna okre\u015bli\u0107 atrybuty, wskazywa\u0107, kt\u00f3re z nich s\u0105 wymagane lub opcjonalne, oraz zdefiniowa\u0107 typy danych i inne przydatne w\u0142a\u015bciwo\u015bci po\u017c\u0105danej struktury.<\/p><p class=\"wp-block-paragraph\">Oto przyk\u0142adowa struktura JSON:<br><\/p><p class=\"wp-block-paragraph\">{<br>&#8222;feedback&#8221;: [<br>{<br>&#8222;original_text&#8221;: &#8222;obs\u0142uga spoko!&#8221;,<br>&#8222;feedback_item&#8221;: &#8222;klient chwali obs\u0142ug\u0119 klienta&#8221;,<br>&#8222;type&#8221;: &#8222;opinion&#8221;,<br>&#8222;sentiment&#8221;: &#8222;pozytywny&#8221;<br>},<br>{<br>&#8222;original_text&#8221;: &#8222;zrobcie dark mode Misie&#8221;,<br>&#8222;feedback_item&#8221;: &#8222;doda\u0107 dark mode do aplikacji&#8221;,<br>&#8222;type&#8221;: &#8222;ideas&#8221;<br>}<br>],<br>&#8222;person&#8221;: [<br>{<br>&#8222;feature&#8221;: &#8222;miasto zamieszkania&#8221;,<br>&#8222;value&#8221;: &#8222;Warszawa&#8221;<br>}<\/p><p class=\"wp-block-paragraph\"><br>]<br>}<\/p><p class=\"wp-block-paragraph\">W\u00f3wczas JSON Schema wygl\u0105da\u0142by nast\u0119puj\u0105co:<\/p><p class=\"wp-block-paragraph\">{<br>&#8222;$schema&#8221;: &#8222;http:\/\/json-schema.org\/draft-07\/schema#&#8221;,<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;feedback&#8221;: {<br>&#8222;type&#8221;: &#8222;array&#8221;,<br>&#8222;items&#8221;: {<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;original_text&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;feedback_item&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;type&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;,<br>&#8222;enum&#8221;: [&#8222;opinion&#8221;, &#8222;ideas&#8221;]<br>},<br>&#8222;sentiment&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>}<br>},<br>&#8222;required&#8221;: [&#8222;original_text&#8221;, &#8222;feedback_item&#8221;, &#8222;type&#8221;]<br>}<br>},<br>&#8222;person&#8221;: {<br>&#8222;type&#8221;: &#8222;array&#8221;,<br>&#8222;items&#8221;: {<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;feature&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;value&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>}<br>},<br>&#8222;required&#8221;: [&#8222;feature&#8221;, &#8222;value&#8221;]<br>}<br>}<br>},<br>&#8222;required&#8221;: [&#8222;feedback&#8221;]<br>}<\/p><p class=\"wp-block-paragraph\">Warto doda\u0107 zar\u00f3wno schemat, przyk\u0142adowy wynik, jak i prost\u0105 list\u0119 kluczy bezpo\u015brednio do promptu, co u\u0142atwi modelowi generowanie danych w odpowiedniej formie (na czerwono zmiany w prompcie):<\/p><p class=\"wp-block-paragraph\">Przeanalizuj dok\u0142adnie opini\u0119 o produkcie bankowym, aby zidentyfikowa\u0107 wszystkie opinie oraz pomys\u0142y na temat produkt\u00f3w lub us\u0142ug bankowych. Sklasyfikuj je jako pozytywne, negatywne lub neutralne oraz okre\u015bl, czy jest to opinia, czy pomys\u0142 na usprawnienie. Ka\u017cdy element opinii powinien mie\u0107 fragment maila (<strong>original_text<\/strong>) oraz skorygowan\u0105 wersj\u0119 merytoryczn\u0105, pozbawion\u0105 j\u0119zyka potocznego (<strong>feedback_item<\/strong>). Zidentyfikuj r\u00f3wnie\u017c wszystkie dost\u0119pne cechy klienta, takie jak p\u0142e\u0107, miejsce zamieszkania, wiek, wykszta\u0142cenie itp., na podstawie po\u015brednich i bezpo\u015brednich informacji w tek\u015bcie. Wynik przedstaw jako obiekt&nbsp;<strong>JSON<\/strong>&nbsp;z kluczami:&nbsp;<strong>feedback<\/strong>&nbsp;oraz&nbsp;<strong>person<\/strong>.<\/p><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"1024\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.53.58-363x1024.png\" alt=\"\" class=\"wp-image-7475\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.53.58-363x1024.png 363w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.53.58-106x300.png 106w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-17-at-10.53.58.png 452w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/figure><p class=\"wp-block-paragraph\">Teraz wynik mo\u017cna analizowa\u0107, zapisywa\u0107, zlicza\u0107 \u2013 do woli, w zale\u017cno\u015bci od potrzeb!<\/p><p class=\"wp-block-paragraph\">{<br>&#8222;$schema&#8221;: &#8222;http:\/\/json-schema.org\/draft-07\/schema#&#8221;,<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;feedback&#8221;: {<br>&#8222;type&#8221;: &#8222;array&#8221;,<br>&#8222;items&#8221;: {<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;original_text&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;feedback_item&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;type&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;,<br>&#8222;enum&#8221;: [&#8222;opinion&#8221;, &#8222;ideas&#8221;]<br>},<br>&#8222;sentiment&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>}<br>},<br>&#8222;required&#8221;: [&#8222;original_text&#8221;, &#8222;feedback_item&#8221;, &#8222;type&#8221;]<br>}<br>},<br>&#8222;person&#8221;: {<br>&#8222;type&#8221;: &#8222;array&#8221;,<br>&#8222;items&#8221;: {<br>&#8222;type&#8221;: &#8222;object&#8221;,<br>&#8222;properties&#8221;: {<br>&#8222;feature&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>},<br>&#8222;value&#8221;: {<br>&#8222;type&#8221;: &#8222;string&#8221;<br>}<br>},<br>&#8222;required&#8221;: [&#8222;feature&#8221;, &#8222;value&#8221;]<br>}<br>}<br>},<br>&#8222;required&#8221;: [&#8222;feedback&#8221;]<br>}<\/p><p class=\"wp-block-paragraph\">Jak wida\u0107,&nbsp;<strong>Ollama<\/strong>&nbsp;i&nbsp;<strong>Bielik<\/strong>&nbsp;to wymarzony duet, a wersje skwantyfikowane radz\u0105 sobie doskonale zar\u00f3wno z zaawansowan\u0105 analiz\u0105 tekstu, jak i generowaniem wynik\u00f3w w wygodnym formacie&nbsp;<strong>JSON<\/strong>. Co wi\u0119cej, istnieje mo\u017cliwo\u015b\u0107 pobrania innych modeli&nbsp;<strong>SLM<\/strong>&nbsp;i lokalnego stworzenia ich \u201emieszanki\u201d, czyli tzw.&nbsp;<strong>Mixture of Agents<\/strong>.<\/p><p class=\"wp-block-paragraph\">Do wersji produkcyjnej&nbsp;<strong>Bielika<\/strong>&nbsp;rekomendujemy jednak precyzj\u0119&nbsp;<strong>FP16<\/strong>&nbsp;oraz wdro\u017cenie w odpowiednio skonfigurowanym \u015brodowisku, np. w konteneryzowanej wersji&nbsp;<strong>vLLM<\/strong>. Chocia\u017c\u2026 mo\u017ce s\u0105 jeszcze inne, lepsze, prostsze, wydajniejsze konfiguracje? Zach\u0119camy do eksperyment\u00f3w! A potem ka\u017cdym spektakularnym sukcesem, ale te\u017c ewentualnym potkni\u0119ciem modelu, mo\u017cecie podzieli\u0107 si\u0119 ze&nbsp;<strong>SpeakLeash<\/strong>, prawowitym zaklinaczem gatunku cyfrowych Bielik\u00f3w.<\/p><p class=\"wp-block-paragraph\">Tymczasem \u017cycz\u0119 wysokich lot\u00f3w! <\/p>","protected":false},"excerpt":{"rendered":"<p>Bielik wyl\u0105dowa\u0142!\u00a0Ma\u0142y model j\u0119zykowy, kt\u00f3ry pojawi\u0142 si\u0119 na prze\u0142omie sierpnia i wrze\u015bnia 2024 roku, zdoby\u0142 wysokie noty w testach benchmark\u00f3w i tym samym uznanie u\u017cytkownik\u00f3w.<\/p>\n","protected":false},"author":34,"featured_media":7465,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"footnotes":""},"categories":[405,763,402,754,389],"tags":[260,193,103],"popular":[],"difficulty-level":[37],"ppma_author":[368],"class_list":["post-7464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hai-magazine-3","category-ai_praktyka","category-hai-magazine","category-hai_premium","category-narzedzia","tag-bielik","tag-llm-2","tag-tutorial","difficulty-level-hard"],"acf":[],"authors":[{"term_id":368,"user_id":34,"is_guest":0,"slug":"sebastian-kondracki","display_name":"Sebastian Kondracki","avatar_url":{"url":"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/08\/Sebastian-Kondracki.jpeg","url2x":"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/08\/Sebastian-Kondracki.jpeg"},"first_name":"Sebastian","last_name":"Kondracki","user_url":"","job_title":"","description":"Dyrektor Biura Rozwoju Sztucznej Inteligencji w Banku Pekao. Zaanga\u017cowany w rozw\u00f3j Bielika, lider inicjatywy S\u00f3jka \u2013 polskiego modelu typu guardrails. Tw\u00f3rca program\u00f3w szkoleniowych z zakresu AI i transformacji cyfrowej."}],"_links":{"self":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/7464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/comments?post=7464"}],"version-history":[{"count":3,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/7464\/revisions"}],"predecessor-version":[{"id":7596,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/7464\/revisions\/7596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media\/7465"}],"wp:attachment":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media?parent=7464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/categories?post=7464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/tags?post=7464"},{"taxonomy":"popular","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/popular?post=7464"},{"taxonomy":"difficulty-level","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/difficulty-level?post=7464"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/ppma_author?post=7464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}