Dengan menggunakan Ollama, Anda dapat menjalankan model bahasa besar open source seperti Llama 3 secara lokal. Ollama menggabungkan bobot model, konfigurasi, dan data ke dalam satu paket yang didefinisikan sebagai Modelfile. Ini mengoptimalkan detail pengaturan dan konfigurasi, termasuk penggunaan GPU. Untuk daftar lengkap model yang didukung dan variasi model, silakan merujuk ke Ollama model library.
Menginstal program
Unduh dan instal Ollama pada platform yang didukung (Mac/Linux/Windows). --- Alamat instalasi: https://ollama.com/
Unduh model
HuggingFace
Unduh model terbuka dari HuggingFace (ekstensi .gguf)
Lihat semua model yang diimpor dengan ollama list.
Mengobrol dengan model secara langsung dari baris perintah dengan ollama run <nama-model>.
Membuat model khusus dari Modelfile
Untuk mengimpor model, Anda harus terlebih dahulu membuat ModelFile. Anda dapat menemukan informasi lebih lanjut di Dokumentasi ModelFiles.
FROM llama3.1
TEMPLATE """{{- if .System }}
<s>{{ .System }}</s>
{{- end }}
<s>Human:
{{ .Prompt }}</s>
<s>Assistant:
"""
SYSTEM """A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions."""
PARAMETER stop <s>
PARAMETER stop </s>
Model chat
Jika Anda menggunakan model chat Llama (misalnya, ollama pull llama2:7b-chat), Anda dapat menggunakan antarmuka ChatOllama. Ini termasuk token khusus untuk pesan sistem dan input pengguna.
Memanfaatkan model Ollama
Semua model lokal tersedia di localhost:11434.
Untuk berinteraksi dengan mereka secara langsung dari jendela Perintah, jalankan ollama run <nama-model>.
from langchain_community.chat_models import ChatOllamafrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_teddynote.messages import stream_response# Memuat model Ollama.llm =ChatOllama(model="llama3.1:8b")# Promptprompt = ChatPromptTemplate.from_template("Jelaskan secara singkat tentang {topic}.")# Membuat chainchain = prompt | llm |StrOutputParser()# Untuk kesederhanaan, respons akan dicetak di terminal.answer = chain.stream({"topic": "deep learning"})# Menampilkan output secara streamingstream_response(answer)
Deep Learning (DL) adalah salah satu cabang utama dalam Machine Learning, yaitu suatu disiplin ilmu yang menempatkan keseimbangan antara kemampuan memodel, mengenali pola, dan membuat prediksi dengan bantuan data yang telah tersedia.
Pemahaman dasar akan bagaimana metode ini digunakan adalah seperti berikut:
1. **Neural Network**: Model ini menggunakan jaringan sintetis yang terdiri dari banyak lapisan, mulai dari lapisan masukan sampai dengan lapisan output. Setiap lapisan pada dasarnya merupakan suatu pemrosesan data yang kompleks.
2. **Algoritma Pembelajaran**: Pemrosesan yang dilakukan oleh model DL ini berdasarkan algoritma pembelajaran, yaitu metode perolehan pengetahuan dari pengalaman atau informasi. Dalam hal ini, data yang dimiliki akan digunakan untuk menyesuaikan perilaku suatu model dengan tujuan mencapai hasil yang diinginkan.
3. **Keterlibatan Komputasi Kuantum**: Banyak orang percaya bahwa adanya teknologi komputasi kuantum akan sangat berguna dalam proses pembelajaran model ini, karena kemampuan pemrosesan data akan meningkat drastis dan memungkinkan untuk pengolahan data yang lebih kompleks.
4. **Dapat Mengolah Data Besar**: Salah satu kegunaan utama teknologi DL adalah dapat mengolah data besar dengan sangat efektif. Hal ini sangat berguna dalam situasi dimana data yang tersedia sangat banyak, tetapi perlu dilakukan analisis mendalam untuk menemukan pola yang tepat.
5. **Banyak Aplikasi**: Teknologi ini memiliki banyak aplikasi di berbagai bidang, seperti pengenalan wajah, pengenalan suara, klasifikasi teks dan gambar, dan lain-lain.
6. **Keuntungan Utama**: Salah satu kelebihan utama DL adalah kemampuan untuk mengolah data kompleks dengan sangat baik, bahkan dalam situasi dimana ada banyak variabel yang tidak diketahui.
7. **Keterbatasan**: Selain itu, teknologi ini juga memiliki keterbatasan di mana proses pembelajaran modelnya membutuhkan waktu yang cukup lama dan sumber daya yang signifikan.
8. **Pengembangan Terus-Menerus**: Teknologi ini sedang berkembang terus-menerus, sehingga ada banyak perusahaan yang mulai menggunakan teknologi ini untuk meningkatkan produktivitas mereka.
Ini adalah contoh dukungan streaming asinkron (astream()). Semuanya dimungkinkan melalui rantai tunggal yang dibuat di atas.
asyncfor chunks in chain.astream( {"topik": "Google"}):# Menjalankan chain secara asinkron dan mengembalikan hasil dalam bentuk chunk.print(chunks, end="", flush=True)# Mencetak setiap chunk.
Google merupakan sebuah perusahaan teknologi multinasional yang didirikan di Amerika Serikat pada tahun 1998 oleh Larry Page dan Sergey Brin. Perusahaan ini berkantor pusat di Mountain View, California.
Perusahaan ini awalnya bernama "Backrub" tapi kemudian diganti menjadi Google. Nama tersebut merupakan gabungan dari dua kata yaitu "googol" yang berarti angka besar dalam bahasa Inggris dan juga merupakan nama perusahaan yang dikemudian ini lebih dikenal di seluruh dunia.
Google mulai berkembang pada tahun 1998, dan perusahaan ini menjadi sangat populer dengan peluncuran mesin pencari internet pertamanya yaitu Google Search. Mesin pencari tersebut menggunakan algoritma kompleks untuk mengindeks situs web secara teratur dan memberikan hasil yang relevan ketika pengguna mencari sesuatu di Internet.
Dalam tahun-tahun berikutnya, Google berkembang menjadi perusahaan teknologi multinasional yang menawarkan banyak layanan berbeda seperti:
1. **Google Ads** (sebelumnya dikenal sebagai AdWords): Layanan iklan pay-per-click yang memungkinkan bisnis untuk mengiklankan produk atau jasa mereka kepada pengguna yang mencari topik tertentu di Internet.
2. **YouTube**: Platform video sharing terbesar di dunia yang memungkinkan pengguna untuk membuat, membagikan, dan menonton video.
3. **Google Drive**: Layanan penyimpanan online yang memungkinkan pengguna untuk menyimpan dan berbagi file mereka dengan orang lain.
4. **Google Maps**: Aplikasi peta digital yang memberikan informasi tentang lokasi geografis, arah jalan, dan aktivitas di suatu daerah.
5. **Gmail**: Layanan surel gratis yang memungkinkan pengguna untuk membuat alamat surel baru tanpa perlu mengeluarkan biaya.
Dalam tahun-tahun terakhir ini, Google telah berkembang sangat pesat baik dalam skala geografis maupun produk dan layanan. Perusahaan ini telah menjadi bagian penting dari kehidupan sehari-hari bagi masyarakat di seluruh dunia dengan menyediakan banyak kemudahan dan fasilitas yang membantu manusia untuk mencari, berbagi, dan mengakses informasi.
Google telah dikembangkan menjadi sebuah perusahaan teknologi yang sangat besar dan kuat. Perusahaan ini tetap fokus pada misinya untuk menyajikan pengalaman Internet yang lebih baik bagi pengguna di seluruh dunia.
Format keluaran: JSON
Gunakan versi terbaru Ollama dan berikan format.
format memaksa model untuk menghasilkan respons dalam format JSON.
from langchain_community.chat_models import ChatOllamallm =ChatOllama( model="llama3.1:8b", # Menentukan model bahasa yang akan digunakan. format="json", # Mengatur format input/output sebagai JSON. temperature=0,)
Untuk menerima respons dalam format JSON, “respons dalam format JSON.” harus disertakan dalam prompt.
# Membuat prompt yang meminta jawaban dalam format JSONprompt ="Berikan 10 tempat wisata di Jawa timur. kunci: `places`. respons dalam format JSON."# Memanggil chainresponse = llm.invoke(prompt)print(response.content)# Mencetak respons yang dihasilkan.
Ollama mendukung LLM multimodal seperti Bakllava dan Llava.
Anda dapat menjelajahi seluruh set versi model seperti Llava menggunakan tags.
Gunakan perintah ollama pull bakllava untuk mengunduh LLM yang diinginkan.
Catatan - Untuk menggunakan versi terbaru yang mendukung multimodal, Anda perlu memperbarui Ollama. Fungsi ini menyediakan cara untuk mengonversi gambar PIL menjadi string yang dienkode dalam Base64 dan menyertakannya dalam HTML untuk menampilkan gambar.
Fungsi convert_to_base64
Menerima gambar PIL sebagai input.
Menyimpan gambar dalam format JPEG ke dalam buffer BytesIO.
Mengenkripsi nilai buffer dalam Base64 dan mengembalikannya sebagai string.
Fungsi plt_img_base64
Menerima string yang dienkode dalam Base64 sebagai input.
Membuat tag HTML yang menggunakan string Base64 sebagai sumbernya.
Merender HTML untuk menampilkan gambar.
Contoh Penggunaan
Membuka gambar PIL dari jalur file yang ditentukan dan menyimpannya dalam pil_image.
Menggunakan fungsi convert_to_base64 untuk mengonversi pil_image menjadi string yang dienkode dalam Base64.
Menggunakan fungsi plt_img_base64 untuk menampilkan string yang dienkode dalam Base64 sebagai gambar.
import base64from io import BytesIOfrom IPython.display import HTML, displayfrom PIL import Imagefrom langchain_core.messages import HumanMessagedefconvert_to_base64(pil_image):""" Mengonversi gambar PIL menjadi string yang dienkode dalam Base64. :param pil_image: Gambar PIL :return: String Base64 yang terkode """ buffered =BytesIO() pil_image.save(buffered, format="JPEG")# Anda dapat mengubah format jika diperlukan. img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")return img_strdefplt_img_base64(img_base64):""" Menampilkan gambar dari string yang dienkode dalam Base64. :param img_base64: String Base64 """# Membuat tag HTML img dengan menggunakan string Base64 sebagai sumbernya image_html =f'<img src="data:image/jpeg;base64,{img_base64}" />'# Merender HTML untuk menampilkan gambardisplay(HTML(image_html))defprompt_func(data): # Mendefinisikan fungsi prompt. text = data["text"]# Mengambil teks dari data. image = data["image"]# Mengambil gambar dari data. image_part ={# Mendefinisikan bagian gambar."type":"image_url",# Menentukan tipe URL gambar."image_url":f"data:image/jpeg;base64,{image}",# Membuat URL gambar.} content_parts = [] # Menginisialisasi daftar untuk menyimpan bagian konten. text_part ={"type":"text","text": text}# Mendefinisikan bagian teks. content_parts.append(image_part)# Menambahkan bagian gambar ke bagian konten. content_parts.append(text_part)# Menambahkan bagian teks ke bagian konten.return [HumanMessage(content=content_parts)] # Mengembalikan objek HumanMessage.file_path ="./images/jeju-beach.jpg"# Jalur filepil_image = Image.open(file_path)image_b64 =convert_to_base64(pil_image)# Mengonversi gambar ke Base64plt_img_base64(image_b64)# Menampilkan gambar yang dienkode dalam Base64
from langchain_core.output_parsers import StrOutputParserfrom langchain_community.chat_models import ChatOllamafrom langchain_core.messages import HumanMessage# Memuat model bahasa multimodal ChatOllama.llm =ChatOllama(model="llava:7b", temperature=0)# Membuat chain dengan menghubungkan fungsi prompt, model bahasa, dan parser output.chain = prompt_func | llm |StrOutputParser()query_chain = chain.invoke( # Memanggil chain untuk menjalankan query.# Mengirimkan teks dan gambar. {"text": "Deskripsikan gambar dalam poin-poin", "image": image_b64})print(query_chain)# Mencetak hasil query.
Gambar ini menunjkan sebuah lokasi pemandian yang sangat menarik. Di depan, terlihat sebuah pulau dengan kota atau bandar yang terletak di tengahnya. Pulau tersebut memiliki pasir yang berwarna putih dan terlihat adanya beberapa bangunan yang menjadi pemandian.
Di sepanjang, terdapat laut dengan warna yang sangat cerah, menggambarkan bahwa lokasi ini berada di sepanjang laut. Pasir dan batu yang terlihat di sepanjang menunjkan bahwa lokasi ini memiliki pemandian yang sangat menarik.
Di bagian kanan, terdapat beberapa bangunan yang terletak di tengahnya. Kebutuhan untuk mencari informasi lebih lanjut tentang kota atau bandar ini tidak dapat diperoleh dari gambar ini.
Gambar ini menunjkan sebuah pemandian yang sangat menarik, terletak di tengahnya dan memiliki pasir yang berwarna putih. Lokasi ini memiliki bahwa menawarkan pemandian yang sangat menarik untuk wisatawan atau pelancongan.