언어
1.0.0
메모
작업이 진행 중입니다.
"언어"를 의미하는 스와힐리어의 Lugha는 다양한 AI 제공자와 상호 작용할 수 있는 간단하고 쉬운 방법을 제공하는 PHP 생성 AI 프레임워크입니다. 주요 아이디어는 AI 모델을 위한 통합된 공급자 독립적 API를 제공하여 공급자 간 전환을 더 쉽게 만드는 것입니다.
이 프로젝트는 Embeddings, Completion 및 Reranking 모델이 통합된 RAG(Retrieval-Augmented Generation) 기반 애플리케이션인 Chatbot용으로 설계된 LangChain 및 LLPHant에서 큰 영감을 받았습니다.
지원되는 제공업체:
공급자 | 링크 | 특징 |
---|---|---|
오픈AI | openai.com | 완성, 임베딩 |
미스트랄 | mistral.ai | 완성, 임베딩 |
ai.google | 완성, 임베딩 | |
GitHub | github.com | 완성, 임베딩 |
인류학 | anthropic.com | 완성 |
보이저.ai | voyageai.com | 임베딩, 순위 재지정 |
올라마 | ollama.com | 완성, 임베딩 |
composer require devscast/lugha
임베딩은 비슷한 의미를 가진 단어가 비슷한 표현을 가질 수 있도록 하는 단어 표현의 한 유형입니다. 단어, 구 또는 문장 간의 유사성을 찾는 데 사용할 수 있습니다. 문서 분류, 클러스터링 및 정보 검색에 유용합니다.
$ client = ClientFactory :: create ( Provider :: GOOGLE );
$ embeddings = $ client -> embeddings (
prompt: ' Hello, world! ' ,
config: new EmbeddingsConfig (
model: ' text-embedding-004 ' ,
dimensions: 512
)
)-> embedding ;
완성 모델은 입력 프롬프트를 기반으로 인간과 유사한 텍스트를 생성하도록 설계되었습니다.
$ client = ClientFactory :: create ( Provider :: OPENAI );
// from a prompt
$ completion = $ client -> completion (
input: ' Hello, world! ' ,
config: new CompletionConfig (
model: ' gpt-3.5-turbo ' ,
temperature: 0.5 ,
maxTokens: 100 ,
frequencyPenalty: 0.5 ,
presencePenalty: 0.5
)
)-> completion ;
// from a chat history
$ chat = $ client -> chat (
input: History :: fromMessages ([
new Message ( ' You are a chatbot, expert in philosophy ' , Role :: SYSTEM ),
new Message ( ' what is the meaning of life ? ' , Role :: USER )
]),
config: new ChatConfig (
model: ' gpt-4-turbo ' ,
temperature: 0.5 ,
maxTokens: 100 ,
frequencyPenalty: 0.5 ,
presencePenalty: 0.5
)
)-> completion ;
순위 재지정 모델은 입력 프롬프트를 기반으로 문서 목록의 순위를 재지정하도록 설계되었습니다. 검색 엔진, 추천 시스템 및 정보 검색에 유용합니다.
$ client = ClientFactory :: create ( Provider :: VOYAGER );
$ ranking = $ client -> reranking (
prompt: ' What is the meaning of life ? ' ,
documents: [
new Document ( ' The best way to predict the future is to create it. ' )
new Document ( ' The only way to do great work is to love what you do. ' )
new Document ( ' Life is short, smile while you still have teeth. ' ),
new Document ( ' The best time to plant a tree was 20 years ago. The second best time is now. ' )
],
config: new RerankingConfig (
model: ' voyager-1.0 ' ,
topK: 3
)
)-> documents ;