GitHub-Vision-Agent
使用gguf/DeepSeek-Janus-Pro-7B作为模型后端的服务接入Vision-Agent,config.py代码如下,记得配置全局环境变量的内容。
# -*- coding: utf-8 -*-
"""
@Project : VisionAgent
@FileName: deepseek_config.py
@Time : 2025/2/18 下午2:45
@Author : ZhouFei
@Email : zhoufei.net@outlook.com
@Desc : 使用 OllamaLMM 类作为基础,为 DeepSeek 模型搭建的配置文件
@Usage :
"""
from typing import Type
from pydantic import BaseModel, Field
from vision_agent.lmm import LMM, OllamaLMM
# 全局变量
DEEPSEEK_MODEL_NAME = "gguf/DeepSeek-Janus-Pro-7B" # 模型名称
DEEPSEEK_BASE_URL = "http://localhost" # 模型 API 地址
class Config(BaseModel):
# for vision_agent_v2
agent: Type[LMM] = Field(default=OllamaLMM)
agent_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME, # 指定 Ollama 中的 DeepSeek 模型
"base_url": DEEPSEEK_BASE_URL, # Ollama API 的默认地址
"json_mode": False,
"num_ctx": 128_000, # 上下文窗口大小
"image_size": 768,
}
)
# for vision_agent_planner_v2
planner: Type[LMM] = Field(default=OllamaLMM)
planner_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vision_agent_planner_v2
summarizer: Type[LMM] = Field(default=OllamaLMM)
summarizer_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vision_agent_planner_v2
critic: Type[LMM] = Field(default=OllamaLMM)
critic_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vision_agent_coder_v2
coder: Type[LMM] = Field(default=OllamaLMM)
coder_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vision_agent_coder_v2
tester: Type[LMM] = Field(default=OllamaLMM)
tester_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vision_agent_coder_v2
debugger: Type[LMM] = Field(default=OllamaLMM)
debugger_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for get_tool_for_task
tool_tester: Type[LMM] = Field(default=OllamaLMM)
tool_tester_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for get_tool_for_task
tool_chooser: Type[LMM] = Field(default=OllamaLMM)
tool_chooser_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for suggestions module
suggester: Type[LMM] = Field(default=OllamaLMM)
suggester_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
# for vqa module
vqa: Type[LMM] = Field(default=OllamaLMM)
vqa_kwargs: dict = Field(
default_factory=lambda: {
"model_name": DEEPSEEK_MODEL_NAME,
"base_url": DEEPSEEK_BASE_URL,
"json_mode": False,
"num_ctx": 128_000,
"image_size": 768,
}
)
def create_agent(self) -> LMM:
return self.agent(**self.agent_kwargs)
def create_planner(self) -> LMM:
return self.planner(**self.planner_kwargs)
def create_summarizer(self) -> LMM:
return self.summarizer(**self.summarizer_kwargs)
def create_critic(self) -> LMM:
return self.critic(**self.critic_kwargs)
def create_coder(self) -> LMM:
return self.coder(**self.coder_kwargs)
def create_tester(self) -> LMM:
return self.tester(**self.tester_kwargs)
def create_debugger(self) -> LMM:
return self.debugger(**self.debugger_kwargs)
def create_tool_tester(self) -> LMM:
return self.tool_tester(**self.tool_tester_kwargs)
def create_tool_chooser(self) -> LMM:
return self.tool_chooser(**self.tool_chooser_kwargs)
def create_suggester(self) -> LMM:
return self.suggester(**self.suggester_kwargs)
def create_vqa(self) -> LMM:
return self.vqa(**self.vqa_kwargs)