PromptTools
:wrench: 测试和实验提示、大语言模型和向量数据库。:hammer:
欢迎使用由Hegel AI创建的prompttools
!这个仓库提供了一套开源的、可自托管的工具,用于实验、测试和评估大语言模型、向量数据库和提示。核心理念是通过熟悉的界面如代码、笔记本和本地playground,使开发者能够进行评估。
只需几行代码,您就可以在不同模型(无论是使用OpenAI、Anthropic还是LLaMA模型)上测试您的提示和参数。您甚至可以评估向量数据库的检索准确性。
from prompttools.experiment import OpenAIChatExperiment
messages = [
[{"role": "user", "content": "讲个笑话。"},],
[{"role": "user", "content": "17077是质数吗?"},],
]
models = ["gpt-3.5-turbo", "gpt-4"]
temperatures = [0.0]
openai_experiment = OpenAIChatExperiment(models, messages, temperature=temperatures)
openai_experiment.run()
openai_experiment.visualize()
要了解问题和未来更新,请加入我们的Discord。
快速开始
要安装prompttools
,您可以使用pip
:
pip install prompttools
您可以在本地运行prompttools
的简单示例,如下所示:
git clone https://github.com/hegelai/prompttools.git
cd prompttools && jupyter notebook examples/notebooks/OpenAIChatExperiment.ipynb
您也可以在Google Colab中运行这个笔记本
Playground
如果您想使用我们的playground界面与prompttools
交互,您可以使用以下命令启动它。
您可以在本地运行prompttools
的简单示例,如下所示:
pip install notebook # 如果尚未安装jupyter notebook
pip install prompttools
然后,克隆git仓库并启动streamlit应用:
git clone https://github.com/hegelai/prompttools.git
cd prompttools && streamlit run prompttools/playground/playground.py
您也可以在Streamlit Community Cloud上访问playground的托管版本。
注意:托管版本不支持LlamaCpp
文档
我们的文档网站包含完整的API参考和各个组件的更多描述。快来看看吧!
支持的集成
以下是我们的实验支持的API列表:
大语言模型
- OpenAI(Completion、ChatCompletion、微调模型)- 已支持
- LLaMA.Cpp(LLaMA 1、LLaMA 2)- 已支持
- HuggingFace(Hub API、推理端点)- 已支持
- Anthropic - 已支持
- Mistral AI - 已支持
- Google Gemini - 已支持
- Google PaLM(旧版)- 已支持
- Google Vertex AI - 已支持
- Azure OpenAI Service - 已支持
- Replicate - 已支持
- Ollama - 进行中
向量数据库和数据工具
- Chroma - 已支持
- Weaviate - 已支持
- Qdrant - 已支持
- LanceDB - 已支持
- Milvus - 探索中
- Pinecone - 已支持
- Epsilla - 进行中
框架
- LangChain - 已支持
- MindsDB - 已支持
- LlamaIndex - 探索中
计算机视觉
- Stable Diffusion - 已支持
- Replicate托管的Stable Diffusion - 已支持
如果您希望我们尽快支持任何API,请开启一个issue或PR来添加它。也欢迎在我们的Discord频道讨论。
常见问题(FAQs)
-
这个库会在发送到OpenAI、Anthropic等之前将我的LLM调用转发到服务器吗?
- 不会,源代码将在您的机器上执行。对LLM API的任何调用都将直接从您的机器执行,不会有任何转发。
-
prompttools
会将我的API密钥或LLM输入和输出存储到服务器吗?- 不会,所有这些数据都保留在您的本地机器上。我们不收集任何PII(个人身份信息)。
-
如何持久化我的结果?
- 要持久化测试和实验的结果,您可以使用
to_csv
、to_json
、to_lora_json
或to_mongo_db
方法导出您的Experiment
。我们正在构建更多持久化功能,我们很乐意进一步讨论您的使用案例、痛点以及可能对您有用的导出选项。
- 要持久化测试和实验的结果,您可以使用
Sentry
使用跟踪
由于我们正在快速更改我们的API,有些错误是由我们的疏忽或过时的文档引起的。为了改善用户体验,我们收集正常包使用的数据,帮助我们了解出现的错误。这些数据被收集并发送到Sentry,这是一个第三方错误跟踪服务,常用于开源软件。它只记录这个库自己的操作。
您可以通过定义一个名为SENTRY_OPT_OUT
的环境变量轻松选择退出。
贡献
我们欢迎PR和建议!不要犹豫,开启PR/issue或通过电子邮件联系我们。请查看我们的贡献指南和"需要帮助"的问题以开始!
使用和反馈
我们很乐意与早期采用者合作,塑造我们的设计。如果您有兴趣将这个工具用于您的项目或有任何反馈,请通过电子邮件联系我们。
许可证
我们将逐步向开源社区发布更多组件。当前的许可证可以在LICENSE文件中找到。如有任何疑问,请联系我们,我们很乐意与您合作。