ahyatt/llm

A package abstracting llm capabilities for emacs.

해결하는 문제

이 라이브러리는 Emacs Lisp(elisp) 코드가 다양한 대규모 언어 모델(LLM)과 상호작용할 수 있도록 표준화된 인터페이스를 제공합니다. 다양한 LLM 공급자(유료 API 및 로컬 설치)와 호환되는 애플리케이션을 작성할 수 있도록 하여, 각 모델마다 공급자별 코드를 따로 작성할 필요 없이 프로젝트의 단일화된 인터페이스를 유지할 수 있게 해줍니다.

작동 방식

이 라이브러리는 일반적인 LLM 기능을 일반 함수로 추상화합니다. 개발자는 이러한 일반 함수를 기반으로 코드를 작성하고, 사용자는 실제 API 호출을 처리할 "공급자"(예: OpenAI, Gemini, Claude, Ollama 등)를 구성합니다. 다음 기능을 지원합니다:

  • 채팅: 동기, 비동기, 스트리밍 응답.
  • 다중 모달 입력: 이미지 및 기타 미디어 입력 지원.
  • 도구 사용: LLM이 특정 인수를 가진 elisp 함수를 호출할 수 있도록 허용.
  • 임베딩: 검색 시스템 등에 사용할 수 있도록 텍스트를 의미 벡터로 변환.
  • 프롬프트 구성: 여러 데이터 소스에서 프롬프트를 구성.

대상 사용자

  • Emacs 개발자: 텍스트 변환, 커밋 메시지 생성, 노트 작성 앱 등 AI 기능을 갖춘 패키지를 개발하고자 하는 사람.
  • Emacs 사용자: 유료 OpenAI 계정에서 로컬 Ollama 인스턴스로 전환하는 등, 다양한 LLM 백엔드를 유연하게 전환하고 싶은 사용자. 설치된 패키지를 변경하지 않고도 가능합니다.

주요 특징

  • 광범위한 공급자 지원: OpenAI, OpenRouter, Azure OpenAI, GitHub Models, Gemini, Vertex AI, Claude, Ollama, Deepseek, GPT4All 등과의 통합을 포함.
  • 유연한 실행 방식: 백그라운드(비동기) 및 실시간(스트리밍) 응답을 모두 지원하여 에디터의 반응성을 유지.
  • 기능 탐지: 특정 모델이 도구 사용이나 추론과 같은 기능을 지원하는지 확인할 수 있는 llm-capabilities 제공.
  • 로컬 우선 옵션: Ollama, llama.cpp, GPT4All 등의 로컬 LLM 실행 환경을 강력히 지원.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트