progrez.cloud

(Journey To Get Into LLM) Night 1: Ollama and Stuffs

10 Desember 2024

# First thing's first...


Di malam pertama ini, aku harus mulai dengan mempelajari seperti apa cara kerja LLM, apakah ada hal yang berbeda dengan Machine Learning yang saya pelajari dulu, dan mulai mempelajari istilah-istilah yang umum dipakai.


Mari kita mulai dengan menginstall Ollama terlebih dahulu, lalu dilanjutkan dengan mempersiapkan lingkungan pengembangan Python dan setelah itu kita install packages yang dibutuhkan seperti <code style="background-color: rgb(240, 240, 240);">python-ollama dan yang lainnya (tergantung yang disarankan oleh ChatGPT :D)


# How Ollama Works


Jadi ollama ini semacam platform AI yang ngebantu kita buat ngelola Model dan dipake buat kebutuhan kita. Dengan interfacenya yang user-friendly banget memungkinkan kita buat ngeprompt langsung model nya locally di komputer kita.


Ollama juga nyediain service yang bisa kita pake kalo mo bikin aplikasi berbasis AI. Dokumentasinya juga lengkap, jadi dicek aja guyss..


# LLM Roles


Satu hal yang menurutku menarik ketika belajar soal LLM ini adalah tentang konsep Role (Peran). Role digunakan untuk mendefinisikan fungsi setiap entitas dalam percakapan. Ini membantu model memahami bagaimana bereaksi terhadap input yang diberikan berdasarkan konteks. Dengan role, kita juga dapat memberikan 'karakter' tertentu kepada AI yang akan kita buat.


# Let's Code It


Nah, sekarang aku bakal nyoba bikin program sederhana sambil belajar pake API dari ollama ini. Btw, kodenya ini dibantu AI ya, hehe..


 
from flask import Flask, request, jsonify
import os, json, requests

app = Flask(__name__)

CONVERSATION_FILE = "conversation.json"

def load_conversation(history_file):
  with open(history_file, "r") as file:
    return json.load(file)

conversation_history = load_conversation(CONVERSATION_FILE)

def save_conversation(conversation):
  with open(CONVERSATION_FILE, "w") as file:
    json.dump(conversation, file, indent=4)

def query_llm(conversation):
  ollama_service = "http://localhost:11434"
  try:
    data = {
     "model": "llama3.2",
     "messages": conversation,
     "stream": False
    }

    response = requests.post(f"{ollama_service}/api/chat", json=data)

    if response.status_code == 200:
      return response.json()
    else:
      return f"Error {response.status_code}: {response.text}"
  except Exception as e:
    return f"Error: {e}"


@app.route("/chat", methods=["POST"])
def chat():
  user_input = request.json.get("message")
  if not user_input:
    return jsonify({"error": "Pesan tidak boleh kosong"}), 400

  conversation_history.append({"role": "user", "content": user_input})

  assistant_response = query_llm(conversation_history)

  conversation_history.append(assistant_response['message'])

  save_conversation(conversation_history)

  return jsonify({"response": assistant_response})

if __name__ == "__main__":
  app.run(port=666, debug=True)

 


File "conversation.json" digunakan untuk menyimpan history percakapan. Harapannya sih biar si AI kita bisa mengingat konteks percakapan sebelumnya.


Hasilnya kurang lebih seperti ini.




Ya gitu, deh. ;)


to be continued...