示例代码¶
Python 与 Flutter 示例代码和测试工具(社区整理,非官方)
项目结构¶
apinexus-docs/
├── examples/
│ ├── config.py # Python 统一配置
│ ├── chat/chat_example.py # Python 文本对话示例
│ ├── image/image_example.py # Python 图像生成示例
│ ├── embedding/embedding_example.py # Python 向量生成示例
│ ├── multimodal/vision_example.py # Python 多模态识图示例
│ ├── audio/audio_example.py # Python 音频处理示例
│ └── flutter/ # Flutter 完整示例项目
│ ├── pubspec.yaml # Flutter 依赖配置
│ ├── analysis_options.yaml # Dart 代码规范
│ ├── .env.example # API Key 模板
│ ├── README.md # Flutter 项目说明
│ └── lib/
│ ├── main.dart # 应用入口 + 导航
│ ├── services/ # API 客户端与状态管理
│ │ ├── api_client.dart # ⭐ 核心:所有 API 调用封装
│ │ ├── chat_service.dart
│ │ ├── image_service.dart
│ │ ├── embedding_service.dart
│ │ └── audio_service.dart
│ ├── pages/ # 各功能页面 UI
│ │ ├── chat_page.dart
│ │ ├── image_page.dart
│ │ ├── embedding_page.dart
│ │ ├── vision_page.dart
│ │ └── audio_page.dart
│ └── widgets/ # 通用组件
│ └── message_bubble.dart
├── tests/
│ ├── test_chat_models.py # 对话模型批量测试
│ ├── test_image_models.py # 图像模型批量测试
│ └── test_embedding_models.py # 向量模型批量测试
└── data/ # 原始数据和测试结果
Python 示例¶
配置 API Key¶
编辑 examples/config.py 或使用环境变量:
运行示例¶
# 文本对话
python3 examples/chat/chat_example.py
# 图像生成
python3 examples/image/image_example.py
# 向量生成
python3 examples/embedding/embedding_example.py
批量测试工具¶
# 测试所有对话模型
python3 tests/test_chat_models.py
# 测试所有 Embedding 模型
python3 tests/test_embedding_models.py
测试报告包含:成功/失败状态、响应时间、Token 使用量、错误信息、JSON 导出
Flutter 示例¶
项目位置¶
examples/flutter/ — 完整 Flutter 示例项目,支持 iOS / Android / Web / macOS / Windows / Linux
配置¶
在 examples/flutter/.env 中配置:
依赖(pubspec.yaml)¶
name: apinexus_flutter_demo
description: API Nexus Flutter Demo
version: 1.0.0+1
environment:
sdk: '>=3.0.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
http: ^1.2.0
provider: ^6.1.0
flutter_dotenv: ^5.1.0
fl_chart: ^0.68.0
audioplayers: ^6.1.0
file_picker: ^8.0.0
flutter:
assets:
- .env
运行¶
cd examples/flutter
flutter pub get
flutter run -d chrome # Web 浏览器
flutter run -d linux # Linux 桌面
flutter run -d macos # macOS 桌面
功能模块¶
| 模块 | 说明 | 入口文件 |
|---|---|---|
| 文本对话 | 聊天界面、流式输出、多轮上下文 | `lib/pages/chat_page.dart |
| 图像生成 | 图片 Prompt 输入、图像预览、下载 | lib/pages/image_page.dart |
| 向量计算 | 语义搜索 UI、相似度展示 | lib/pages/embedding_page.dart |
| 多模态识图 | 本地图片选择、OCR 识别 | lib/pages/vision_page.dart |
| 音频处理 | TTS 文本转语音、音色选择 | lib/pages/audio_page.dart |
最佳实践模板(Python)¶
带重试和日志的客户端¶
import time
import logging
from openai import OpenAI, APIError, RateLimitError
logging.basicConfig(level=logging.INFO)
class APINexusClient:
def __init__(self, api_key, base_url="https://apinexus.net/v1"):
self.client = OpenAI(api_key=api_key, base_url=base_url)
def chat_with_retry(self, messages, max_retries=3, model="gpt-4o-mini"):
for i in range(max_retries):
try:
return self.client.chat.completions.create(
model=model, messages=messages, timeout=60)
except RateLimitError:
if i < max_retries - 1:
time.sleep(2 ** i)
continue
raise
except APIError as e:
if "500" in str(e) and i < max_retries - 1:
time.sleep(1)
continue
raise
⚠️ 本文档为社区整理,非官方文档,仅供参考。
最后更新: 2026-06-19