语言
1.0.0
笔记
工作正在进行中。
Lugha 来自斯瓦希里语,意思是“语言”,是一个 PHP 生成式 AI 框架,提供了一种与各种 AI 提供商交互的简单方法。主要思想是为 AI 模型提供一个与提供商无关的统一 API,从而更容易在提供商之间切换。
该项目深受LangChain和LLPhant的启发,专为聊天机器人、基于RAG(检索增强生成)的应用程序而设计,集成了嵌入、完成和重排序模型。
支持的提供商:
提供商 | 关联 | 特征 |
---|---|---|
开放人工智能 | openai.com | 完成、嵌入 |
米斯特拉尔 | 米斯特拉尔.ai | 完成、嵌入 |
谷歌 | 谷歌人工智能 | 完成、嵌入 |
GitHub | github.com | 完成、嵌入 |
人择 | 人类网 | 完成 |
航行者.ai | 爱航 | 嵌入、重新排名 |
奥拉玛 | olama.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 ;