Project Icon

vision-agent

开源AI代理库用于生成计算机视觉代码

Vision Agent是一个开源库,通过AI代理框架快速生成计算机视觉任务代码。用户可以用文本描述问题,AI代理会生成相应的解决方案。该库包括对话型VisionAgent和代码生成型VisionAgentCoder两种代理,提供多种视觉工具,支持自定义工具添加,并可与Azure OpenAI集成。Vision Agent能将解决视觉问题的时间大幅缩短,提高开发效率。

vision_agent

🔍🤖 视觉代理

ci_状态 PyPI 版本 版本

视觉代理是一个库,帮助您利用代理框架生成代码来解决视觉任务。许多当前的视觉问题可能需要花费数小时或数天时间来解决,您需要找到合适的模型,弄清楚如何使用它,并编程实现您想要完成的任务。视觉代理旨在通过允许用户以文本形式描述他们的问题,让代理框架生成代码来解决任务,从而提供秒级体验。请查看我们的Discord以获取更新和路线图!

网络应用

va.landing.ai 上试用视觉代理(注意,这可能不是最新版本)

文档

视觉代理库文档

入门指南

安装

要开始使用,您可以使用pip安装库:

pip install vision-agent

确保您有一个OpenAI API密钥,并将其设置为环境变量(如果您使用Azure OpenAI,请参阅Azure设置部分):

export OPENAI_API_KEY="your-api-key"

视觉代理

有两种代理可供使用。视觉代理是一个会话代理,可以访问允许它编写和导航Python代码和文件系统的工具。它可以用自然语言与用户交谈。视觉代理编码器是一个可以为视觉任务编写代码的代理,比如计算图像中的人数。但是,它不能进行对话,只能用代码回应。视觉代理可以调用视觉代理编码器来编写视觉代码。

基本用法

要在本地运行streamlit应用程序与视觉代理聊天,您可以运行以下命令:

pip install -r examples/chat/requirements.txt
export WORKSPACE=/path/to/your/workspace
export ZMQ_PORT=5555
streamlit run examples/chat/app.py

您可以在这里找到有关streamlit应用程序的更多详细信息。

基本编程用法

>>> from vision_agent.agent import VisionAgent
>>> agent = VisionAgent()
>>> resp = agent("Hello")
>>> print(resp)
[{"role": "user", "content": "Hello"}, {"role": "assistant", "content": "{'thoughts': '用户向我打招呼了。我将回应一个问候并询问我能如何帮助他们。', 'response': '你好!今天我能为您提供什么帮助?', 'let_user_respond': True}"}]
>>> resp.append({"role": "user", "content": "你能数一下这张图片中有多少人吗?", "media": ["people.jpg"]})
>>> resp = agent(resp)

视觉代理编码器

基本用法

您可以像与任何LLM或LMM模型交互一样与代理交互:

>>> from vision_agent.agent import VisionAgentCoder
>>> agent = VisionAgentCoder()
>>> code = agent("罐子中咖啡豆占据了多大比例的面积?", media="jar.jpg")

这将生成以下代码:

from vision_agent.tools import load_image, grounding_sam

def calculate_filled_percentage(image_path: str) -> float:
    # 步骤1:加载图像
    image = load_image(image_path)

    # 步骤2:分割罐子
    jar_segments = grounding_sam(prompt="jar", image=image)

    # 步骤3:分割咖啡豆
    coffee_beans_segments = grounding_sam(prompt="coffee beans", image=image)

    # 步骤4:计算分割后的罐子面积
    jar_area = 0
    for segment in jar_segments:
        jar_area += segment['mask'].sum()

    # 步骤5:计算分割后的咖啡豆面积
    coffee_beans_area = 0
    for segment in coffee_beans_segments:
        coffee_beans_area += segment['mask'].sum()

    # 步骤6:计算咖啡豆占罐子面积的百分比
    if jar_area == 0:
        return 0.0  # 避免除以零
    filled_percentage = (coffee_beans_area / jar_area) * 100

    # 步骤7:返回计算得出的百分比
    return filled_percentage

要更好地理解模型是如何得出答案的,您可以通过传入verbose参数来以调试模式运行:

>>> agent = VisionAgentCoder(verbose=2)

详细用法

您还可以通过调用chat_with_workflow来获取更多信息。输入格式是一个包含键rolecontentmedia的字典列表:

>>> results = agent.chat_with_workflow([{"role": "user", "content": "罐子面积的百分之多少被咖啡豆填满了?", "media": ["jar.jpg"]}])
>>> print(results)
{
    "code": "from vision_agent.tools import ..."
    "test": "calculate_filled_percentage('jar.jpg')",
    "test_result": "...",
    "plan": [{"code": "...", "test": "...", "plan": "..."}, ...],
    "working_memory": ...,
}

通过这种方式,您可以检查更详细的信息,如测试代码、测试结果、完成任务所使用的计划或工作记忆。

多轮对话

您也可以与vision-agent进行多轮对话,对代码提供反馈并让它更新。您只需要将代码作为助手的回复添加:

agent = va.agent.VisionAgent(verbosity=2)
conv = [
    {
        "role": "user",
        "content": "这些工人是否穿戴了安全装备?只输出True或False值。",
        "media": ["workers.png"],
    }
]
result = agent.chat_with_workflow(conv)
code = result["code"]
conv.append({"role": "assistant", "content": code})
conv.append(
    {
        "role": "user",
        "content": "你能否也返回穿戴安全装备的工人数量?",
    }
)
result = agent.chat_with_workflow(conv)

工具

模型或用户可以使用各种工具。有些在本地执行,而其他则是为您托管的。您还可以直接要求LMM为您构建工具。例如:

>>> import vision_agent as va
>>> lmm = va.lmm.OpenAILMM()
>>> detector = lmm.generate_detector("你能为我构建一个罐子检测器吗?")
>>> detector(va.tools.load_image("jar.jpg"))
[{"labels": ["jar",],
  "scores": [0.99],
  "bboxes": [
    [0.58, 0.2, 0.72, 0.45],
  ]
}]

您还可以向代理添加自定义工具:

import vision_agent as va
import numpy as np

@va.tools.register_tool(imports=["import numpy as np"])
def custom_tool(image_path: str) -> str:
    """我的自定义工具文档。

    参数:
        image_path (str): 图像的路径。

    返回:
        str: 工具的结果。

    示例
    -------
    >>> custom_tool("image.jpg")
    """

    return np.zeros((10, 10))

您需要确保使用@va.tools.register_tool调用它使用的任何导入。全局变量不会被register_tool捕获,所以您需要将它们包含在函数中。确保文档格式与上面相同,包括描述、参数:返回:示例\n-------。您可以在这里找到一个用例示例,因为这是代理用来选择和使用工具的方式。

Azure设置

如果您想使用Azure OpenAI模型,您需要有两个OpenAI模型部署:

  1. OpenAI GPT-4o模型
  2. OpenAI文本嵌入模型
Screenshot 2024-06-12 at 5 54 48 PM

然后您可以设置以下环境变量:

export AZURE_OPENAI_API_KEY="您的api密钥"
export AZURE_OPENAI_ENDPOINT="您的端点"
# 您的Azure OpenAI聊天模型的部署名称
export AZURE_OPENAI_CHAT_MODEL_DEPLOYMENT_NAME="您的gpt4o模型部署名称"
# 您的Azure OpenAI文本嵌入模型的部署名称
export AZURE_OPENAI_EMBEDDING_MODEL_DEPLOYMENT_NAME="您的嵌入模型部署名称"

注意:确保您的Azure模型部署有足够的配额(每分钟令牌数)来支持它。默认值8000TPM是不够的。

然后您可以使用Azure OpenAI模型运行Vision Agent:

import vision_agent as va
agent = va.agent.AzureVisionAgentCoder()

问答

如何开始使用OpenAI API积分

  1. 访问OpenAI API平台注册API密钥。
  2. 按照说明购买和管理您的API积分。
  3. 确保您的API密钥在项目设置中正确配置。

如果没有足够的API积分,可能会导致依赖OpenAI API的功能受限或无法使用。

有关管理API使用和积分的更多详细信息,请参阅OpenAI API文档。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号