基于Jupyter的数据分析任务助手
项目描述
bia-bob
BIA bob
是一个基于Jupyter的助手,用于使用生成Python代码进行生物图像分析(BIA)的大型语言模型与数据交互。它可以利用 OpenAI的chatGPT、Google的Gemini、Anthropic的Claude、Github模型市场、Helmholtz的blablador 和 Ollama。使用它需要OpenAI API账户或Google Cloud账户或Helmholtz ID账户。使用Ollama免费,但需要在本地运行Ollama服务器。
bob
可以编写短的Python代码片段和整个Jupyter笔记本,以供您进行图像/数据分析工作流程。
免责声明
bia-bob
是一个旨在简化图像分析工作流程设计的科研项目。在底层,它使用人工智能/大型语言模型来生成满足用户请求的文本和代码。用户负责根据良好的科学实践验证生成的代码。以下是一些建议
- 如果你不明白生成的代码片段的作用,请在执行代码之前询问
%%bob explain this code in detail to a Python beginner:
- Bob为你生成数据分析工作流程后,可以询问
%%bob How could I verify this analysis workflow ?
。例如,测量分割结果的质量,或者测量与人工分析相比的自动化定量测量的差异,这些都是良好的科学实践。 - 如果你不确定图像分析工作流程是否有效,可以考虑咨询人类专家。例如,可以通过 https://image.sc 联系。
[!警告] 当使用 OpenAI、Google Gemini、Anthropic、Github 模型或 BiA-Bob 的任何其他端点时,你必须遵守各自公司或组织的服务条款。你输入的提示将被传输到他们的服务器并可能在那里进行处理和存储。请确保不要提交任何敏感、机密或个人数据。此外,使用这些服务可能会产生费用。
使用方法
你可以这样初始化 bob
from bia_bob import bob
代码生成
你可以这样要求 Bob 生成代码
%bob Load blobs.tif and show it
然后它会响应一个 Python 代码片段,你可以执行它(查看完整示例)
如果你想在同一行中编写,请使用 %bob
,如果你想在下面编写,请使用 %%bob
。
如果你想在下一个代码单元中继续使用变量,你需要在以下提示中指定变量的名称。
笔记本生成
当明确要求 Bob 生成笔记本时,它会在当前目录中放置一个包含生成的代码的新笔记本文件(查看完整示例)。然后你可以在 Jupyter lab 中打开它。
笔记本修改
你也可以要求 Bob 修改现有的笔记本,例如,添加解释性 markdown 单元(查看完整示例)
此外,还可以将 Jupyter 笔记本翻译成其他语言,例如,通过提示 %bob translate the filename.ipynb to <language>
。
编写提示
你也可以要求 Bob 为你编写提示。这可以用来探索分析图像数据的潜在策略。注意:可能需要修改这些提示,特别是当建议的分析工作流程很长且复杂时。缩短建议的提示,使其成为回答你的科学问题的最小必要步骤。(查看完整示例)
提示增强
你可以使用 {variable_name}
语法将来自给定 Python 变量的额外信息添加到你的提示中。这样,变量的内容将成为提示的一部分(完整示例)。
解释代码
如果你不确定生成的代码的作用,你可以要求 Bob 向你解释
修复错误
Bob 可以修复你执行的代码中的简单错误。只需在错误发生后的单元格顶部添加 %%fix
即可。
代码文档
使用 %%doc
魔法,你可以为给定的代码单元生成文档。
GPU 加速
使用 %%acc
魔法,你可以用 GPU 加速的函数替换常见的图像处理函数。建议检查图像处理结果是否保持不变。你可以在 这个笔记本 中看到一个示例。
示例笔记本
命令行界面
您可以从终端使用bia-bob
。例如,创建笔记本时推荐这样做
bia-bob Please create a Jupyter Notebook that opens blobs.tif, segments the bright objects and shows the resulting label image on top of the original image with a curtain.
这也可以用于创建其他文件,例如CSV文件。
已知问题
如果您想向bob
提问,需要在?
前加一个空格。
%bob What do you know about blobs.tif ?
安装
您可以使用pip安装bia-bob
。建议将其安装到conda/mamba环境中。如果您之前从未使用过conda,请先阅读此指南。
建议将bia-bob
与生物图像分析的有用工具一起安装在conda环境中。
conda env create -f https://github.com/haesleinhuepf/bia-bob/raw/main/environment.yml
然后,您可以激活此环境...
conda activate bob_env
使用OpenAI作为后端
创建一个OpenAI API密钥并将其添加到名为OPENAI_API_KEY
的环境变量中,具体说明请参阅此页面。
使用Anthropic / claude
创建一个Anthropic API密钥并将其添加到名为ANTHROPIC_API_KEY
的环境变量中。
使用Github Models Marketplace
如果您正在使用Github Models Marketplace中的模型,请将访问模型的GITHUB API密钥存储在名为GH_MODELS_API_KEY
的环境变量中。
然后,您可以像这样访问模型
bob.initialize(
endpoint='github_models',
model='Phi-3.5-mini-instruct')
使用Azure
如果您正在使用Microsoft Azure上托管的模型,请将访问模型的API密钥存储在名为AZURE_API_KEY
的环境变量中。
然后,您可以像这样访问模型
bob.initialize(
endpoint='azure',
model='Phi-3.5-mini-instruct')
或者,您也可以直接指定端点
bob.initialize(
endpoint='https://models.inference.ai.azure.com',
model='Phi-3.5-mini-instruct')
使用自定义端点
如果自定义端点支持OpenAI API,也可以使用。例如有blablador和ollama。一个示例在这里
为此,只需按照上述说明安装openai后端(测试版本:1.5.0)。
- 如果您想使用ollama和例如
codellama
模型,您必须从单独的终端运行ollama serve
,然后像这样初始化bob
bob.initialize(endpoint='ollama', model='codellama')
- 如果您想使用blablador,该工具对德国学者免费,只需在此页面上获取API密钥并将其存储为
BLABLADOR_API_KEY
变量。
bob.initialize(
endpoint='blablador',
model='Mistral-7B-Instruct-v0.2')
- 也可以使用自定义端点,例如像这样
bob.initialize(
endpoint='http://localhost:11434/v1',
api_key='my_key',
model='codellama')
使用Google Gemini 1.5 Flash / Pro
创建一个Google API密钥并将其存储在环境变量GOOGLE_API_KEY
中。
pip install google-generativeai>=0.7.2
使用Google Cloud AI API作为后端
注意:此方法已弃用。使用上面所示的gemini 1.5。
pip install google-cloud-aiplatform
(推荐google-cloud-aiplatform版本 >= 1.38.1)
要使用Google Cloud API,您需要在这里创建一个Google Cloud账户并在Google Cloud中创建一个项目(用于计费)这里。您需要将身份验证详细信息本地存储,具体说明请参阅这里。这需要安装Google Cloud CLI。简要来说:运行安装程序,在询问时,勾选“运行gcloud init”复选框。或者从终端自行运行'gcloud init'。重新启动终端窗口。安装Google Cloud CLI后,启动一个终端并使用以下命令进行身份验证
gcloud auth application-default login
按照浏览器中的说明操作。输入您的项目ID(不是名称)。如果成功了,终端的大致样子应该是这样的
开发
如果您想为 bia-bob
贡献,您可以以开发模式安装它,方法如下
git clone https://github.com/haesleinhuepf/bia-bob.git
cd bia-bob
pip install -e .
可扩展性
如果您是 Python 库的维护者,并且想让 BiA-bob 知道您库中的函数,您可以使用 入口点 扩展 Bob 的知识。将以下内容添加到您的库 setup.cfg
[options.entry_points]
bia_bob_plugins =
plugin1 = your_library._bia_bob_plugins:list_bia_bob_plugins
在上面的 _bia_bob_plugins.py
中定义此函数(并随意重命名函数和 Python 文件)
def list_bia_bob_plugins():
"""List of function hints for bia_bob"""
return """
* Computes the sum of a and b
your_library.compute_sum(a:int,b:int) -> int
* Determines the difference between a and b
your_library.compute_difference(a:int, b:int) -> int
"""
请注意,语法应该与上面所示的大致相同:一个带简短描述的项目符号和下面的代码片段。您也可以像在 这个笔记本 中演示的那样生成 list_bia_bob_plugins
函数。请只列出最重要的函数。如果扩展 BiA-Bob 的插件列表过长,提示将超过最大提示长度。
提供 Bob 扩展的已知 Python 库列表
(您可以通过发送 pull-request 来扩展此列表)
类似项目
存在类似的项目
- jupyter-ai
- chatGPT-jupyter-extension
- chapyter
- napari-chatGPT
- bioimageio-chatbot
- Claude Engineer
- BioChatter
- aider
- OpenDevin
- Devika
问题
如果您遇到任何问题或想提供反馈或建议,请在与详细描述一起在 image.sc 上创建一个线程,并标记 @haesleinhuepf。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。