bosquet 项目介绍
bosquet 是一个面向大型语言模型(LLM)应用的工具项目,其目标是简化人工智能应用的构建过程。在现代AI应用中,涉及多个复杂的元素,如提示模板的管理、内存处理以及与外部世界的交互需求等,而bosquet正是为了解决这些问题而生的。
项目核心功能
LLM 和工具服务管理
bosquet简化了LLM和工具的服务管理,使开发者能更高效地管理大语言模型和外部服务之间的交互。
提示模板处理
bosquet通过与Selmer模板库的集成,实现提示模板的高效管理。这使得开发者能够快速且灵活地构建和修改各类提示模板,以适应复杂的AI应用需求。
提示链接和合成
项目中使用了强大的Pathom图处理引擎,允许开发者进行提示的链接和合成。这帮助开发者在复杂的提示结构中实现不同模块的高效协作。
代理和工具定义抽象
为了便于与外部API的交互,bosquet提供了代理和工具定义的抽象。这使得开发者可以更为简洁地定义和管理AI应用与外部世界的互动。
LLM 内存管理
由于当前LLM的上下文窗口有限,bosquet提供了内存管理功能。这确保了模型能够记忆和使用重要的历史信息,从而提升AI应用的智能表现。
其他工具
bosquet提供了诸如响应缓存等其他实用工具,以增强AI应用的性能表现。
项目文档
虽然bosquet的完整文档仍在完善中,但开发者可以通过它了解更多关于项目功能和使用方法的信息。
使用指南
配置和密钥管理
bosquet使用secrets.edn
文件来存储密钥,使用config.edn
文件来存储本地配置。开发者需在使用前复制并修改config.edn.sample
。
命令行接口示例
项目提供了命令行接口,开发者可以通过输入以下命令来查看CLI选项:
clojure -M -m bosquet.cli
设置默认模型的示例命令为:
clojure -M -m bosquet.cli llms set --service openai --temperature 0 --model gpt-4
别忘了为API服务设置密钥:
clojure -M -m bosquet.cli keys set openai
提示完成
bosquet可以进行简单的提示完成。例如:
(require '[bosquet.llm.generator :refer [generate llm]])
(generate "When I was 6 my sister was half my age. Now I’m 70 how old is my sister?")
通过提示映射完成
开发者可以通过提示映射来生成答案,例如:
(require '[bosquet.llm :as llm])
(require '[bosquet.llm.generator :refer [generate llm]])
(generate
llm/default-services
{:question-answer "Question: {{question}} Answer: {{answer}}"
:answer (llm :openai)
:self-eval ["Question: {{question}}"
"Answer: {{answer}}"
""
"Is this a correct answer?"
"{{test}}"]
:test (llm :openai)}
{:question "What is the distance from Moon to Io?"})
聊天功能
项目提供了聊天功能,可以进行复杂的交互生成:
(require '[bosquet.llm.wkk :as wkk])
(generate
[[:system "You are an amazing writer."]
[:user ["Write a synopsis for the play:"
"Title: {{title}}"
"Genre: {{genre}}"
"Synopsis:"]]
[:assistant (llm wkk/openai
wkk/model-params {:temperature 0.8 :max-tokens 120}
wkk/var-name :synopsis)]
[:user "Now write a critique of the above synopsis:"]
[:assistant (llm wkk/openai
wkk/model-params {:temperature 0.2 :max-tokens 120}
wkk/var-name :critique)]]
{:title "Mr. X"
:genre "Sci-Fi"})
通过这些功能,bosquet为开发者提供了强大的工具集,使得AI应用的开发变得更加灵活和高效。