Ollama LLM 사용기
Ollama LLM 사용기
나만의 개인 LLM을 가지고 싶었다.
누구나 아이언맨의 자비스 같은 AI 비서를 꿈꾸지 않을까? 그리고 무엇보다 ‘무료로’ 사용할 수 있는 AI.
M3 칩 512G 저장공간, 36 메모리를 사용중이다. 여유롭게 사용하고 싶어 llama3를 사용했다.
1
ollama run llama3
생각보다 속도가 빠른 것에 놀라웠다. 하지만 질문할 때 해당 질문에 대한 것만 기억하고, 이전에 했던 질문을 기억하는 기능은 없다.
계획 짜기
넣고 싶은 기능:
- 웹 검색 기능
- 나와의 대화를 기억하기
- 말투나 성격 제어
- 음성으로도 소통 가능하게 만들기
음성 제어 코드
Python을 통해 llama3가 음성으로 답변하는 코드를 작성했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import requests
import speech_recognition as sr
import asyncio
import edge_tts
from langdetect import detect
OLLAMA_URL = "http://localhost:11434/api/generate"
OLLAMA_MODEL = "llama3"
NEO_PROMPT = "너의 이름은 Neo야."
def ask_ollama(prompt):
full_prompt = f"{NEO_PROMPT}\n\n사용자: {prompt}\nNeo:"
data = {"model": OLLAMA_MODEL, "prompt": full_prompt, "stream": False}
response = requests.post(OLLAMA_URL, json=data)
return response.json().get("response", "답변을 가져오지 못했습니다.")
def listen_microphone():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
recognizer.adjust_for_ambient_noise(source, duration=1)
recognizer.pause_threshold = 2.0
audio = recognizer.listen(source)
question = recognizer.recognize_google(audio, language="ko-KR")
return question
def speak(text):
lang = detect(text)
voice = "en-US-GuyNeural" if lang == 'en' else "ko-KR-InJoonNeural"
# edge-tts로 음성 출력
대화 종료를 말하면 종료하도록 커스터마이즈 했고, 프롬프트를 직접 추가하여 성격을 지정할 수 있다. 음성도 한국어/영어에 적합한 목소리로 변경된다.
GitHub: https://github.com/Lajancia/LLM-voice-control
웹 검색은 어떻게 붙일까?
LangChain 사용을 추천받았다. 특히 도구! 데이터베이스와 연결이 가능하다면 이전 대화를 기억하게 할 수도 있을 것 같다.
이번 토이프로젝트에서는 llama3 + LangChain + Django 조합으로 개인 AI 비서를 만들어보도록 하자.
This post is licensed under CC BY 4.0 by the author.