myspace / README.md
StarHidden's picture
新增cpue和sprfmo查询函数;优化工程结构
5d4bed3
|
Raw
History Blame Contribute Delete
9.31 kB
metadata
title: Myspace
emoji: 📊
colorFrom: yellow
colorTo: blue
sdk: gradio
sdk_version: 6.20.0
python_version: '3.13'
app_file: app.py
pinned: false
license: mit
short_description: 测试空间

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

渔业数据智能查询代理

基于 Hugging Face smolagents 框架构建的自然语言查询智能代理,面向渔业科研数据场景,支持查询 logbook 捕捞日志可用性、以及 GFW 渔船作业努力量检索,通过 Gradio Web 界面提供交互式体验。

主要功能

  • 自然语言查询:用户以中文自然语言描述需求,代理自动提取参数并调用对应工具
  • Logbook 可用性查询:按海区、年份范围、物种、数据类型筛选捕捞日志数据
  • GFW 作业努力量查询:按时间(2012-2024)、空间范围、船旗国、渔具类型检索渔船作业数据
  • CPUE 文献查询:查询单位捕捞努力量渔获量相关研究文献,支持按海区、年份、物种等筛选
  • SPRFMO 数据查询:查询南太平洋区域渔业管理组织数据,支持捕捞量/努力量查询和聚合统计
  • 交互式 Web 界面:基于 Gradio 的 Chat 界面,支持流式输出和步骤可视化

目录结构

myspace/
├── app.py                         # 主程序入口,包含 Agent 定义、Tool 类、Web 界面启动
├── query_tools/                   # 查询工具模块目录
│   ├── __init__.py                # 模块初始化文件
│   ├── logbook_availability_query.py  # Logbook 数据可用性查询函数
│   ├── query_gfw.py               # GFW 渔船作业努力量查询函数(2012-2024)
│   ├── literature_cpue_query.py   # 文献 CPUE 数据查询函数
│   └── query_sprfmo.py            # SPRFMO 南太平洋数据查询函数
├── requirements.txt               # Python 依赖清单
└── .gradio/                       # Gradio 自动生成的 SSL 证书目录
    └── certificate.pem
文件/目录 说明
app.py 项目核心文件,包含 5 个 Tool 类(参数提取、Logbook 查询、GFW 查询、CPUE 文献查询、SPRFMO 查询)、Agent 工厂函数和 GradioUI 启动入口
query_tools/ 查询工具模块目录,统一管理所有数据查询工具
query_tools/logbook_availability_query.py Logbook 查询模块,读取本地 CSV 数据并支持多维度筛选与文件输出
query_tools/query_gfw.py GFW 查询模块,从嵌套 ZIP 中提取月度 CSV 数据并按时空范围筛选(仅支持 2012-2024 年数据)
query_tools/literature_cpue_query.py 文献 CPUE 数据查询模块,已集成到 Agent
query_tools/query_sprfmo.py SPRFMO 南太平洋数据查询模块,已集成到 Agent
requirements.txt 项目 Python 依赖包清单

技术栈

类别 技术 用途
Agent 框架 smolagents 智能代理核心框架(ToolCallingAgent)
LLM 接入 OpenAIServerModel / DeepSeek API 大语言模型推理,支持工具调用
Web 界面 GradioUI (Gradio) 交互式 Chat 界面,流式输出
数据处理 pandas 数据读取、筛选、格式转换
数据源 Hugging Face Datasets 远程数据集下载(huggingface_hub)
文件解析 zipfile / openpyxl / csv ZIP 解压、Excel/CSV 解析
模块组织 Python Package (query_tools) 查询工具统一管理
编程语言 Python 3.12+ 项目开发语言

环境要求与前置条件

  • Python:3.12 或更高版本
  • Hugging Face Token:拥有 HF 账号并在 Settings 中申请 Read 权限的 Access Token(用于访问数据集)
  • LLM API Key:DeepSeek API Key 或其他 OpenAI 兼容服务的 API Key
  • 数据文件(Logbook/GFW 查询需要):
    • Logbook:本地需有 ../data/logbook_availability.csv 数据文件
    • GFW:本地需有 GFW ZIP 数据包,或自动从 ~/Desktop/资料下载/柔鱼数据/ 搜索

安装与配置

1. 克隆项目

cd /your/workspace
git clone <repository-url> testAgent
cd testAgent

2. 创建虚拟环境(推荐)

conda create -n agentproject python=3.12
conda activate agentproject

3. 安装依赖

pip install -r requirements.txt

依赖清单:

包名 最低版本 用途
smolagents[gradio] >=1.0.0 Agent 框架 + Gradio 集成
requests >=2.31.0 HTTP 请求
pandas >=2.0.0 数据处理
huggingface_hub >=0.23.0 HF 数据集 API
openpyxl >=3.1.0 Excel 文件解析
openai >=2.0.0 OpenAI 兼容 LLM 接入

4. 配置常量

编辑 readData.py 文件顶部的常量:

# Hugging Face 数据集访问 Token
HF_TOKEN = "hf_你的Token"

# LLM API 配置
OPENAI_API_KEY = "sk-你的APIKey"
OPENAI_API_BASE = "https://api.deepseek.com/v1"  # API 地址
MODEL_ID = "deepseek-chat"                        # 模型 ID

# DeepSeek 思考模式
THINKING_MODE_ENABLED = True   # True 启用,False 禁用
THINKING_EFFORT = "high"       # low/medium/high/max

常见 API 地址配置

服务 OPENAI_API_BASE MODEL_ID
DeepSeek https://api.deepseek.com/v1 deepseek-chat
OpenAI https://api.openai.com/v1 gpt-4o-mini
本地 Ollama http://localhost:11434/v1 模型名称
智谱 GLM https://open.bigmodel.cn/api/paas/v4 glm-4-flash

注意:使用 DeepSeek 思考模式时必须选择 deepseek-chatdeepseek-reasoner 不支持工具调用。

本地开发启动

cd /your/workspace/myspace
python3 app.py

启动后终端将输出:

正在启动 GradioUI Web 界面...
Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://xxxxx.gradio.live  (72小时有效)

浏览器打开上述地址即可使用 Chat 界面进行查询。

生产环境部署

方式一:直接运行

# 前台运行
python3 app.py

# 后台运行(使用 nohup)
nohup python3 app.py > agent.log 2>&1 &

方式二:Docker 部署

FROM python:3.12-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# 暴露 Gradio 默认端口
EXPOSE 7860

CMD ["python3", "app.py"]
docker build -t fishery-agent .
docker run -d -p 7860:7860 \
  -e HF_TOKEN=hf_你的Token \
  -e OPENAI_API_KEY=sk_你的Key \
  fishery-agent

方式三:Systemd 服务

[Unit]
Description=Fishery Data Query Agent
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/your/workspace/myspace
ExecStart=/your/venv/bin/python3 app.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

使用示例

示例 1:查询 Logbook 数据可用性

用户:2010到2020年东南太平洋有哪些鱿鱼捕捞日志数据?

代理将调用 logbook_query 工具,参数提取为 region="东南太平洋", year_start=2010, year_end=2020, species="鱿鱼"

示例 2:查询 GFW 渔船作业努力量

用户:查询2012年1月太平洋区域中国渔船的作业努力量

代理将调用 gfw_query 工具,参数提取为 year=2012, month=1, flag="CN",以及对应的经纬度范围。

注意:GFW 查询仅支持 2012-2024 年 的数据,超出范围会返回错误。

示例 3:无明确工具指向的查询

用户:帮我查一下有什么数据可以用

代理将根据系统提示词中加载的数据集文件列表,告知用户可用的数据和查询方式。

Agent 工具一览

工具名 类名 功能 必填参数
parameter_extractor ParameterExtractionTool 从自然语言提取数据集查询参数 user_input
logbook_query LogbookQueryTool 查询 Logbook 捕捞日志可用性 无(均为可选)
gfw_query GfwQueryTool 查询 GFW 渔船作业努力量(2012-2024) year, month, lat_min, lat_max, lon_min, lon_max
literature_cpue_query LiteratureCpueQueryTool 查询 CPUE 相关文献数据 无(均为可选)
sprfmo_query SprfmoQueryTool 查询 SPRFMO 南太平洋数据 data_type

注意:

  • logbook_query 支持可选参数:region(海区)、year_start(起始年份)、year_end(结束年份)、species(物种)、data_type(数据类型)
  • gfw_query 仅支持查询 2012-2024 年的数据,超出范围会返回错误
  • gfw_query 支持可选参数:flag(船旗国)、geartype(渔具类型)、min_fishing_hours(最小捕捞小时数)
  • literature_cpue_query 支持可选参数:region(海区)、year_startyear_endspeciesresponse_variable(响应变量)、paper_type(论文类型)
  • sprfmo_query 必须指定 data_type('catch' 或 'effort'),支持可选参数:country(国家)、year_startyear_endspecies(仅捕捞量)、gear_type(仅努力量)、group_by(聚合维度)