# functioncall-server **Repository Path**: kioo/functioncall-server ## Basic Information - **Project Name**: functioncall-server - **Description**: functioncall 大模型后端服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-03 - **Last Updated**: 2025-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flask Web API 项目 这是一个使用 uv 工具构建的 Flask Web API 项目,提供多个 HTTP 接口供访问。 ## 项目特性 - 使用 uv 进行快速依赖管理 - 提供 RESTful API 接口 - JSON 格式的响应 - 错误处理和状态码 - 健康检查端点 ## API 接口 ### 基础接口 #### 1. 首页 - **URL**: `/` - **方法**: GET - **描述**: 显示欢迎信息和可用接口列表 #### 2. Hello API - **URL**: `/api/hello` - **方法**: GET - **参数**: `name` (可选) - **示例**: `/api/hello?name=张三` #### 3. 数据提交 - **URL**: `/api/data` - **方法**: POST - **Content-Type**: application/json - **描述**: 接收 JSON 数据并返回确认 #### 4. 用户列表 - **URL**: `/api/users` - **方法**: GET - **描述**: 获取模拟用户列表 #### 5. 健康检查 - **URL**: `/health` - **方法**: GET - **描述**: 检查服务状态 ### 通义千问 Function Call 接口 #### 6. 智能聊天(支持函数调用) - **URL**: `/api/qwen/chat` - **方法**: POST - **Content-Type**: application/json - **描述**: 与通义千问进行对话,支持自动函数调用 - **请求体**: ```json { "message": "北京今天天气怎么样?", "api_key": "your-dashscope-api-key" // 可选,如果设置了环境变量 } ``` #### 7. 获取可用函数 - **URL**: `/api/qwen/functions` - **方法**: GET - **描述**: 获取所有可用的函数定义 #### 8. 执行特定函数 - **URL**: `/api/qwen/function` - **方法**: POST - **Content-Type**: application/json - **描述**: 直接执行指定的函数 - **请求体**: ```json { "function_name": "calculate_math", "arguments": { "expression": "2+3*4" } } ``` ## 安装和运行 ### 使用 uv(推荐) ```bash # 克隆或下载项目 cd flask_web_project # 安装依赖(包括通义千问相关包) uv sync # 配置 API Key(二选一) # 方式1: 设置环境变量 export DASHSCOPE_API_KEY="your-dashscope-api-key" # 方式2: 复制配置文件并编辑 cp config_example.py config.py # 然后编辑 config.py 文件,填入你的 API Key # 运行应用 uv run main.py ``` ### 传统方式 ```bash # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 配置 API Key export DASHSCOPE_API_KEY="your-dashscope-api-key" # 运行应用 python main.py ``` ### 获取通义千问 API Key 1. 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/) 2. 注册并登录账号 3. 在控制台中创建应用并获取 API Key 4. 将 API Key 设置为环境变量或配置文件中 ## 访问应用 应用启动后,访问 http://localhost:5000 查看首页。 ## 测试 API ### 基础功能测试 ```bash # 测试 Hello API curl "http://localhost:5000/api/hello?name=张三" # 测试数据提交 curl -X POST http://localhost:5000/api/data \ -H "Content-Type: application/json" \ -d '{"name": "张三", "age": 25}' # 测试用户列表 curl http://localhost:5000/api/users # 健康检查 curl http://localhost:5000/health ``` ### 通义千问功能测试 ```bash # 1. 获取可用函数列表 curl http://localhost:5000/api/qwen/functions # 2. 测试智能聊天(天气查询 - 会自动调用函数) curl -X POST http://localhost:5000/api/qwen/chat \ -H "Content-Type: application/json" \ -d '{ "message": "北京今天天气怎么样?", "api_key": "sk-***" }' # 3. 测试智能聊天(数学计算 - 会自动调用函数) curl -X POST http://localhost:5000/api/qwen/chat \ -H "Content-Type: application/json" \ -d '{ "message": "帮我计算 (10+5)*2-3 等于多少?", "api_key": "your-dashscope-api-key" }' # 4. 测试智能聊天(信息搜索 - 会自动调用函数) curl -X POST http://localhost:5000/api/qwen/chat \ -H "Content-Type: application/json" \ -d '{ "message": "搜索一下人工智能的最新发展", "api_key": "your-dashscope-api-key" }' # 5. 直接执行数学计算函数 curl -X POST http://localhost:5000/api/qwen/function \ -H "Content-Type: application/json" \ -d '{ "function_name": "calculate_math", "arguments": { "expression": "2+3*4" } }' # 6. 直接执行天气查询函数 curl -X POST http://localhost:5000/api/qwen/function \ -H "Content-Type: application/json" \ -d '{ "function_name": "get_weather_info", "arguments": { "location": "上海", "date": "明天" } }' ``` ## 项目结构 ``` flask_web_project/ ├── main.py # 主应用文件(Flask Web 服务) ├── qwen_function_call.py # 通义千问 Function Call 功能模块 ├── config_example.py # API Key 配置示例文件 ├── pyproject.toml # uv 项目配置 ├── requirements.txt # pip 依赖文件 ├── README.md # 项目说明 ├── .gitignore # Git 忽略文件 └── .python-version # Python 版本 ``` ### 文件说明 - **main.py**: Flask Web 应用主文件,包含所有 API 接口 - **qwen_function_call.py**: 通义千问大模型集成模块,实现 Function Call 功能 - **config_example.py**: 配置文件示例,包含 API Key 设置和使用示例 - **pyproject.toml**: uv 包管理器的项目配置文件 - **requirements.txt**: 传统 pip 的依赖列表文件 ## 开发说明 本项目使用 `uv` 作为包管理器,具有以下优势: - **极快的性能**: 比 pip 快 10-100 倍 - **统一工具**: 集成了包管理、虚拟环境、依赖锁定等功能 - **兼容性**: 完全兼容现有的 Python 生态系统 - **现代设计**: 使用 Rust 编写,具有更好的性能和可靠性 ### 添加新依赖 ```bash # 使用 uv 添加依赖 uv add package_name # 添加开发依赖 uv add --dev package_name ``` ### 更新依赖 ```bash # 更新所有依赖 uv sync # 更新特定依赖 uv add package_name@latest ``` ### 通义千问功能开发指南 #### 自定义函数 要添加新的函数供通义千问调用,请在 `qwen_function_call.py` 中: 1. 在 `QwenFunctionCall` 类中添加新的函数方法 2. 在 `get_function_definitions()` 方法中添加函数定义 3. 在 `execute_function()` 方法中添加函数调用逻辑 示例: ```python def your_custom_function(self, param1, param2=None): """你的自定义函数""" # 实现你的逻辑 return {"result": "success", "data": "your_result"} ``` #### API Key 管理 - 开发环境:使用环境变量 `DASHSCOPE_API_KEY` - 生产环境:建议使用密钥管理服务 - 测试环境:可以在请求中传递 `api_key` 参数 #### 错误处理 项目已实现完整的错误处理机制: - API Key 验证 - 函数参数验证 - 网络请求异常处理 - 大模型响应解析 ### 技术规格 - **Web 框架**: Flask 3.1.1 - **Python 版本**: 3.12+ - **包管理器**: uv (推荐) / pip - **大模型集成**: 通义千问 (DashScope API) - **主要依赖**: - `flask`: Web 框架 - `dashscope`: 通义千问 SDK - `requests`: HTTP 请求库 - **功能特性**: - RESTful API 设计 - Function Call 智能函数调用 - 完整的错误处理 - API 文档和使用示例 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题,请通过 GitHub Issues 联系。