Add ./manage.py chat
This commit is contained in:
parent
ded583ef22
commit
b3fcf3d4e0
@ -185,3 +185,6 @@ EMAIL_HOST_PASSWORD = 'N72yBNi4cJw'
|
|||||||
SERVER_EMAIL = EMAIL_HOST_USER
|
SERVER_EMAIL = EMAIL_HOST_USER
|
||||||
|
|
||||||
CSRF_TRUSTED_ORIGINS = ['https://*.themblem.com', 'https://themblem.com']
|
CSRF_TRUSTED_ORIGINS = ['https://*.themblem.com', 'https://themblem.com']
|
||||||
|
|
||||||
|
KIMI_API_KEY = "sk-IKA7ZnDrv44mfaorjF5UZjSsml66yaBNdcrASJsV90hCSdgn"
|
||||||
|
KIMI_API_URL = "https://api.moonshot.cn/v1"
|
||||||
|
|||||||
180
api/products/README_AI_CHAT.md
Normal file
180
api/products/README_AI_CHAT.md
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
# AI聊天功能使用说明
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
AI聊天模块为徵象防伪验证平台提供智能客服功能,基于Moonshot Kimi K2 API实现。
|
||||||
|
|
||||||
|
## 文件结构
|
||||||
|
|
||||||
|
```
|
||||||
|
api/products/
|
||||||
|
├── aichat.py # 核心AI聊天库
|
||||||
|
├── management/
|
||||||
|
│ └── commands/
|
||||||
|
│ └── chat.py # Django管理命令
|
||||||
|
└── README_AI_CHAT.md # 本文档
|
||||||
|
```
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
### 1. 作为Django管理命令运行(推荐)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 进入Django项目目录
|
||||||
|
cd api
|
||||||
|
|
||||||
|
# 启动AI聊天
|
||||||
|
python manage.py chat
|
||||||
|
|
||||||
|
# 使用自定义参数
|
||||||
|
python manage.py chat --api-key "your_key" --history-file "~/.custom_history"
|
||||||
|
```
|
||||||
|
|
||||||
|
**可用参数:**
|
||||||
|
- `--history-file`: 指定历史文件路径 (默认: ~/.aichat_history)
|
||||||
|
|
||||||
|
**注意:** API密钥和URL现在从Django设置中自动获取,无需命令行参数
|
||||||
|
|
||||||
|
### 2. 作为Python库导入
|
||||||
|
|
||||||
|
```python
|
||||||
|
from products.aichat import AIChatService
|
||||||
|
|
||||||
|
# 创建服务实例
|
||||||
|
service = AIChatService()
|
||||||
|
|
||||||
|
# 发送消息
|
||||||
|
response = service.chat("你好,请介绍一下徵象平台")
|
||||||
|
|
||||||
|
# 查看对话历史
|
||||||
|
history = service.get_conversation_history()
|
||||||
|
|
||||||
|
# 清空历史
|
||||||
|
service.clear_history()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 直接运行库文件(测试模式)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python api/products/aichat.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
### 核心功能
|
||||||
|
- **智能对话**: 基于Kimi K2的AI客服
|
||||||
|
- **工具调用**: 支持二维码扫描等工具
|
||||||
|
- **多轮对话**: 完整的对话历史管理
|
||||||
|
- **品牌定制**: 徵象平台专属系统提示词
|
||||||
|
|
||||||
|
### 控制台功能
|
||||||
|
- **Readline支持**: 完整的命令行体验
|
||||||
|
- **历史记录**: 持久化的输入历史
|
||||||
|
- **智能补全**: Tab键命令补全
|
||||||
|
- **快捷键**: Emacs风格的编辑快捷键
|
||||||
|
|
||||||
|
## 可用命令
|
||||||
|
|
||||||
|
在聊天界面中,可以使用以下命令:
|
||||||
|
|
||||||
|
- `help` - 显示帮助信息
|
||||||
|
- `history` - 查看AI对话历史
|
||||||
|
- `clear` - 清空对话历史
|
||||||
|
- `readline-help` - 显示快捷键帮助
|
||||||
|
- `stats` - 显示readline统计信息
|
||||||
|
- `quit/exit/q` - 退出系统
|
||||||
|
|
||||||
|
## 快捷键
|
||||||
|
|
||||||
|
### 导航
|
||||||
|
- `↑/↓` - 浏览历史记录
|
||||||
|
- `Ctrl+A` - 跳转到行首
|
||||||
|
- `Ctrl+E` - 跳转到行尾
|
||||||
|
|
||||||
|
### 编辑
|
||||||
|
- `Ctrl+U` - 删除到行首
|
||||||
|
- `Ctrl+K` - 删除到行尾
|
||||||
|
- `Ctrl+W` - 删除单词
|
||||||
|
|
||||||
|
### 搜索
|
||||||
|
- `Ctrl+R` - 反向搜索历史
|
||||||
|
- `Ctrl+S` - 正向搜索历史
|
||||||
|
|
||||||
|
### 补全
|
||||||
|
- `Tab` - 自动补全命令
|
||||||
|
|
||||||
|
## 配置说明
|
||||||
|
|
||||||
|
### 环境变量
|
||||||
|
- `KIMI_API_KEY`: Moonshot API密钥(在Django设置中配置)
|
||||||
|
- `KIMI_API_URL`: Moonshot API基础URL(在Django设置中配置)
|
||||||
|
|
||||||
|
### Django设置配置
|
||||||
|
API凭证在 `emblemapi/settings.py` 中配置:
|
||||||
|
```python
|
||||||
|
KIMI_API_KEY = "your_api_key_here"
|
||||||
|
KIMI_API_URL = "https://api.moonshot.cn/v1"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 历史文件
|
||||||
|
- 默认位置: `~/.aichat_history`
|
||||||
|
- 最大记录数: 1000条
|
||||||
|
- 自动保存: 退出时自动保存
|
||||||
|
|
||||||
|
## 开发说明
|
||||||
|
|
||||||
|
### 扩展工具
|
||||||
|
在`AIChatService._define_tools()`中添加新工具:
|
||||||
|
|
||||||
|
```python
|
||||||
|
def _define_tools(self):
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"type": "function",
|
||||||
|
"function": {
|
||||||
|
"name": "your_tool_name",
|
||||||
|
"description": "工具描述",
|
||||||
|
"parameters": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {},
|
||||||
|
"required": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 自定义系统提示词
|
||||||
|
修改`_add_system_message()`方法中的`system_prompt`变量。
|
||||||
|
|
||||||
|
## 故障排除
|
||||||
|
|
||||||
|
### 常见问题
|
||||||
|
|
||||||
|
1. **API调用失败**
|
||||||
|
- 检查API密钥是否正确
|
||||||
|
- 确认网络连接正常
|
||||||
|
- 查看错误日志
|
||||||
|
|
||||||
|
2. **Readline功能异常**
|
||||||
|
- 确认终端支持readline
|
||||||
|
- 检查历史文件权限
|
||||||
|
- 尝试重新创建历史文件
|
||||||
|
|
||||||
|
3. **导入错误**
|
||||||
|
- 确认Django环境已激活
|
||||||
|
- 检查Python路径设置
|
||||||
|
- 验证依赖包安装
|
||||||
|
|
||||||
|
### 调试模式
|
||||||
|
使用`--verbosity=2`参数获取详细日志:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py chat --verbosity=2
|
||||||
|
```
|
||||||
|
|
||||||
|
## 更新日志
|
||||||
|
|
||||||
|
- **v1.0**: 初始版本,支持基础AI聊天和工具调用
|
||||||
|
- **v1.1**: 添加readline支持和Django管理命令
|
||||||
|
- **v1.2**: 重构为库模块,分离界面和核心功能
|
||||||
324
api/products/aichat.py
Executable file
324
api/products/aichat.py
Executable file
@ -0,0 +1,324 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
AI Chat Module for 徵象防伪验证平台
|
||||||
|
基于 Moonshot Kimi K2 API 的智能客服聊天系统
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from typing import List, Dict, Any, Optional
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from openai import OpenAI
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ToolCall:
|
||||||
|
"""工具调用数据结构"""
|
||||||
|
id: str
|
||||||
|
type: str
|
||||||
|
function: Dict[str, Any]
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ToolResult:
|
||||||
|
"""工具执行结果"""
|
||||||
|
tool_call_id: str
|
||||||
|
content: str
|
||||||
|
|
||||||
|
|
||||||
|
class AIChatService:
|
||||||
|
"""AI聊天服务主类"""
|
||||||
|
|
||||||
|
def __init__(self, api_key: str = None, base_url: str = None):
|
||||||
|
"""初始化AI聊天服务
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_key: Moonshot API密钥
|
||||||
|
base_url: API基础URL
|
||||||
|
"""
|
||||||
|
self.api_key = api_key or getattr(settings, 'KIMI_API_KEY', None)
|
||||||
|
self.base_url = base_url or getattr(settings, 'KIMI_API_URL', None)
|
||||||
|
|
||||||
|
if not self.api_key:
|
||||||
|
raise ValueError("KIMI_API_KEY is required")
|
||||||
|
|
||||||
|
self.client = OpenAI(
|
||||||
|
api_key=self.api_key,
|
||||||
|
base_url=self.base_url
|
||||||
|
)
|
||||||
|
|
||||||
|
self.model = "kimi-k2-0711-preview"
|
||||||
|
self.conversation_history: List[Dict[str, str]] = []
|
||||||
|
self.tools = self._define_tools()
|
||||||
|
|
||||||
|
# 添加系统提示词
|
||||||
|
self._add_system_message()
|
||||||
|
|
||||||
|
def _define_tools(self) -> List[Dict[str, Any]]:
|
||||||
|
"""定义可用工具"""
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"type": "function",
|
||||||
|
"function": {
|
||||||
|
"name": "start_qr_scan",
|
||||||
|
"description": "启动二维码扫描,暂停对话等待扫描结果",
|
||||||
|
"parameters": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {},
|
||||||
|
"required": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
def _add_system_message(self):
|
||||||
|
"""添加系统提示词"""
|
||||||
|
system_prompt = """你是一个专业的徵象防伪验证平台AI客服助手。
|
||||||
|
|
||||||
|
平台介绍:
|
||||||
|
徵象是由广州市诚投科技有限公司开发的AI驱动的智能防伪平台,通过多模态特征识别构建新一代防伪验证体系,实现从物理防伪到数字认证的全链路保护。系统采用ISO 12931国际防伪标准,已获取国家发明专利(证书编号:CN 115222000 B)。
|
||||||
|
|
||||||
|
服务范围:
|
||||||
|
1. 商品防伪验证
|
||||||
|
2. 证件安全验证
|
||||||
|
3. 工业品防伪
|
||||||
|
4. 品牌数字化服务
|
||||||
|
|
||||||
|
服务原则:
|
||||||
|
1. 专业、友好、准确回答用户问题
|
||||||
|
2. 优先使用官方信息回答
|
||||||
|
3. 对于不确定的信息,明确告知用户
|
||||||
|
4. 引导用户使用相关功能和服务
|
||||||
|
5. 当用户需要验证产品真伪时,主动提供二维码扫描功能
|
||||||
|
|
||||||
|
可用工具:
|
||||||
|
- start_qr_scan: 启动二维码扫描功能,用于产品防伪验证
|
||||||
|
|
||||||
|
请根据用户问题提供准确、有用的回答。如果用户需要验证产品,请使用二维码扫描工具。"""
|
||||||
|
|
||||||
|
self.conversation_history.append({
|
||||||
|
"role": "system",
|
||||||
|
"content": system_prompt
|
||||||
|
})
|
||||||
|
|
||||||
|
def _execute_tool(self, tool_call: ToolCall) -> ToolResult:
|
||||||
|
"""执行工具调用
|
||||||
|
|
||||||
|
Args:
|
||||||
|
tool_call: 工具调用信息
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
工具执行结果
|
||||||
|
"""
|
||||||
|
# Debug logging
|
||||||
|
print(f"🔧 执行工具调用: {tool_call.function}")
|
||||||
|
|
||||||
|
function_name = tool_call.function.name if hasattr(tool_call.function, 'name') else tool_call.function.get('name', '')
|
||||||
|
print(f"🔧 工具名称: {function_name}")
|
||||||
|
|
||||||
|
if function_name == "start_qr_scan":
|
||||||
|
return self._execute_qr_scan(tool_call.id)
|
||||||
|
else:
|
||||||
|
return ToolResult(
|
||||||
|
tool_call_id=tool_call.id,
|
||||||
|
content=f"未知工具: {function_name}"
|
||||||
|
)
|
||||||
|
|
||||||
|
def _execute_qr_scan(self, tool_call_id: str) -> ToolResult:
|
||||||
|
"""执行二维码扫描(模拟实现)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
tool_call_id: 工具调用ID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
扫描结果
|
||||||
|
"""
|
||||||
|
print("\n🔍 启动二维码扫描...")
|
||||||
|
print("📱 请在客户端打开相机进行扫描...")
|
||||||
|
|
||||||
|
# 模拟扫描过程
|
||||||
|
for i in range(5, 0, -1):
|
||||||
|
print(f"⏳ 扫描中... {i}秒后完成")
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
print("✅ 扫描完成!")
|
||||||
|
print("🎯 验证结果:通过")
|
||||||
|
print("🏷️ 二维码标签:真品")
|
||||||
|
|
||||||
|
# 返回验证结果
|
||||||
|
result = {
|
||||||
|
"status": "pass",
|
||||||
|
"message": "二维码验证通过,产品为真品",
|
||||||
|
"verification_time": time.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
}
|
||||||
|
|
||||||
|
return ToolResult(
|
||||||
|
tool_call_id=tool_call_id,
|
||||||
|
content=json.dumps(result, ensure_ascii=False)
|
||||||
|
)
|
||||||
|
|
||||||
|
def chat(self, user_message: str) -> str:
|
||||||
|
"""发送消息给AI并获取回复
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user_message: 用户消息
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
AI回复内容
|
||||||
|
"""
|
||||||
|
# 添加用户消息到历史
|
||||||
|
self.conversation_history.append({
|
||||||
|
"role": "user",
|
||||||
|
"content": user_message
|
||||||
|
})
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 调用Moonshot API
|
||||||
|
response = self.client.chat.completions.create(
|
||||||
|
model=self.model,
|
||||||
|
messages=self.conversation_history,
|
||||||
|
tools=self.tools,
|
||||||
|
tool_choice="auto",
|
||||||
|
temperature=0.7,
|
||||||
|
max_tokens=2000
|
||||||
|
)
|
||||||
|
|
||||||
|
assistant_message = response.choices[0].message
|
||||||
|
|
||||||
|
# 检查是否有工具调用
|
||||||
|
if assistant_message.tool_calls:
|
||||||
|
# 执行工具调用
|
||||||
|
tool_results = []
|
||||||
|
for tool_call in assistant_message.tool_calls:
|
||||||
|
# 将function对象转换为字典格式
|
||||||
|
function_dict = {
|
||||||
|
'name': tool_call.function.name,
|
||||||
|
'arguments': tool_call.function.arguments
|
||||||
|
}
|
||||||
|
|
||||||
|
tool_call_obj = ToolCall(
|
||||||
|
id=tool_call.id,
|
||||||
|
type=tool_call.type,
|
||||||
|
function=function_dict
|
||||||
|
)
|
||||||
|
result = self._execute_tool(tool_call_obj)
|
||||||
|
tool_results.append(result)
|
||||||
|
|
||||||
|
# 将工具结果发送给AI获取最终回复
|
||||||
|
tool_messages = []
|
||||||
|
for result in tool_results:
|
||||||
|
tool_messages.append({
|
||||||
|
"role": "tool",
|
||||||
|
"content": result.content,
|
||||||
|
"tool_call_id": result.tool_call_id
|
||||||
|
})
|
||||||
|
|
||||||
|
# 添加助手消息和工具结果到历史
|
||||||
|
self.conversation_history.append({
|
||||||
|
"role": "assistant",
|
||||||
|
"content": assistant_message.content or "",
|
||||||
|
"tool_calls": [
|
||||||
|
{
|
||||||
|
"id": tc.id,
|
||||||
|
"type": tc.type,
|
||||||
|
"function": {
|
||||||
|
"name": tc.function.name,
|
||||||
|
"arguments": tc.function.arguments
|
||||||
|
}
|
||||||
|
} for tc in assistant_message.tool_calls
|
||||||
|
]
|
||||||
|
})
|
||||||
|
self.conversation_history.extend(tool_messages)
|
||||||
|
|
||||||
|
# 获取最终回复
|
||||||
|
final_response = self.client.chat.completions.create(
|
||||||
|
model=self.model,
|
||||||
|
messages=self.conversation_history,
|
||||||
|
temperature=0.7,
|
||||||
|
max_tokens=2000
|
||||||
|
)
|
||||||
|
|
||||||
|
final_message = final_response.choices[0].message.content
|
||||||
|
|
||||||
|
# 添加最终回复到历史
|
||||||
|
self.conversation_history.append({
|
||||||
|
"role": "assistant",
|
||||||
|
"content": final_message
|
||||||
|
})
|
||||||
|
|
||||||
|
return final_message
|
||||||
|
else:
|
||||||
|
# 没有工具调用,直接返回回复
|
||||||
|
content = assistant_message.content or "抱歉,我没有获取到有效回复。"
|
||||||
|
|
||||||
|
# 添加助手回复到历史
|
||||||
|
self.conversation_history.append({
|
||||||
|
"role": "assistant",
|
||||||
|
"content": content
|
||||||
|
})
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
error_msg = f"AI服务调用失败: {str(e)}"
|
||||||
|
print(f"❌ {error_msg}")
|
||||||
|
return error_msg
|
||||||
|
|
||||||
|
def get_conversation_history(self) -> List[Dict[str, str]]:
|
||||||
|
"""获取对话历史
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
对话历史列表
|
||||||
|
"""
|
||||||
|
return self.conversation_history.copy()
|
||||||
|
|
||||||
|
def clear_history(self):
|
||||||
|
"""清空对话历史"""
|
||||||
|
self.conversation_history = []
|
||||||
|
self._add_system_message()
|
||||||
|
|
||||||
|
def print_history(self):
|
||||||
|
"""打印对话历史"""
|
||||||
|
print("\n" + "="*50)
|
||||||
|
print("对话历史:")
|
||||||
|
print("="*50)
|
||||||
|
|
||||||
|
for i, message in enumerate(self.conversation_history):
|
||||||
|
role = message["role"]
|
||||||
|
content = message["content"]
|
||||||
|
|
||||||
|
if role == "system":
|
||||||
|
print(f"🤖 系统: {content[:100]}...")
|
||||||
|
elif role == "user":
|
||||||
|
print(f"👤 用户: {content}")
|
||||||
|
elif role == "assistant":
|
||||||
|
print(f"🤖 AI助手: {content}")
|
||||||
|
elif role == "tool":
|
||||||
|
print(f"🔧 工具结果: {content}")
|
||||||
|
|
||||||
|
if i < len(self.conversation_history) - 1:
|
||||||
|
print("-" * 30)
|
||||||
|
|
||||||
|
print("="*50)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
"""直接运行时的简单测试"""
|
||||||
|
print("🧪 AI聊天库测试模式")
|
||||||
|
print("=" * 30)
|
||||||
|
print("这是一个库模块,建议使用以下方式运行:")
|
||||||
|
print("1. Django管理命令: python manage.py chat")
|
||||||
|
print("2. 作为库导入: from products.aichat import AIChatService")
|
||||||
|
print("=" * 30)
|
||||||
|
|
||||||
|
# 简单的功能测试
|
||||||
|
try:
|
||||||
|
service = AIChatService()
|
||||||
|
print("✅ AIChatService 初始化成功")
|
||||||
|
print(f"📝 系统提示词长度: {len(service.conversation_history[0]['content'])} 字符")
|
||||||
|
print(f"🔧 可用工具数量: {len(service.tools)}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ 初始化失败: {e}")
|
||||||
|
|
||||||
1
api/products/management/__init__.py
Normal file
1
api/products/management/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Django management package
|
||||||
1
api/products/management/commands/__init__.py
Normal file
1
api/products/management/commands/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Django management commands package
|
||||||
275
api/products/management/commands/chat.py
Normal file
275
api/products/management/commands/chat.py
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Django management command for AI chat with readline support
|
||||||
|
Usage: python manage.py chat
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import readline
|
||||||
|
import atexit
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from products.aichat import AIChatService
|
||||||
|
|
||||||
|
|
||||||
|
class ReadlineConfig:
|
||||||
|
"""Readline配置类"""
|
||||||
|
|
||||||
|
def __init__(self, history_file: str = None):
|
||||||
|
self.history_file = history_file or os.path.expanduser("~/.aichat_history")
|
||||||
|
self.commands = ['help', 'history', 'clear', 'readline-help', 'stats', 'quit', 'exit', 'q']
|
||||||
|
self.setup_readline()
|
||||||
|
|
||||||
|
def setup_readline(self):
|
||||||
|
"""设置readline功能"""
|
||||||
|
# 设置历史文件
|
||||||
|
try:
|
||||||
|
readline.read_history_file(self.history_file)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# 设置历史文件大小
|
||||||
|
readline.set_history_length(1000)
|
||||||
|
|
||||||
|
# 注册退出时保存历史
|
||||||
|
atexit.register(self.save_history)
|
||||||
|
|
||||||
|
# 设置tab补全
|
||||||
|
readline.parse_and_bind('tab: complete')
|
||||||
|
|
||||||
|
# 设置其他有用的绑定
|
||||||
|
readline.parse_and_bind('set editing-mode emacs') # 使用emacs编辑模式
|
||||||
|
readline.parse_and_bind('set completion-ignore-case on') # 忽略大小写补全
|
||||||
|
readline.parse_and_bind('set show-all-if-ambiguous on') # 显示所有可能的补全
|
||||||
|
|
||||||
|
# 设置自定义补全器
|
||||||
|
readline.set_completer(self.completer)
|
||||||
|
|
||||||
|
# 设置补全分隔符
|
||||||
|
readline.set_completer_delims(' \t\n`!@#$%^&*()=+[{]}\\|;:\'",<>?')
|
||||||
|
|
||||||
|
def completer(self, text, state):
|
||||||
|
"""自定义补全器"""
|
||||||
|
options = [i for i in self.commands if i.startswith(text)]
|
||||||
|
if state < len(options):
|
||||||
|
return options[state]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def save_history(self):
|
||||||
|
"""保存历史到文件"""
|
||||||
|
try:
|
||||||
|
readline.write_history_file(self.history_file)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"⚠️ 保存历史记录失败: {e}")
|
||||||
|
|
||||||
|
def add_to_history(self, line: str):
|
||||||
|
"""添加行到历史"""
|
||||||
|
if line.strip():
|
||||||
|
readline.add_history(line.strip())
|
||||||
|
|
||||||
|
def get_history_stats(self):
|
||||||
|
"""获取历史统计信息"""
|
||||||
|
try:
|
||||||
|
history_length = readline.get_current_history_length()
|
||||||
|
return {
|
||||||
|
'current_length': history_length,
|
||||||
|
'max_length': readline.get_history_length(),
|
||||||
|
'history_file': self.history_file
|
||||||
|
}
|
||||||
|
except Exception:
|
||||||
|
return {'error': '无法获取历史统计信息'}
|
||||||
|
|
||||||
|
def clear_history(self):
|
||||||
|
"""清空readline历史"""
|
||||||
|
try:
|
||||||
|
readline.clear_history()
|
||||||
|
print("🗑️ Readline历史已清空")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"⚠️ 清空历史失败: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
"""AI聊天管理命令"""
|
||||||
|
|
||||||
|
help = '启动AI聊天系统,支持readline功能'
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
"""添加命令行参数"""
|
||||||
|
parser.add_argument(
|
||||||
|
'--history-file',
|
||||||
|
type=str,
|
||||||
|
help='指定历史文件路径 (默认: ~/.aichat_history)'
|
||||||
|
)
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
"""执行命令"""
|
||||||
|
self.stdout.write("🚀 徵象防伪验证平台 AI客服系统")
|
||||||
|
self.stdout.write("=" * 50)
|
||||||
|
self.stdout.write("输入 'help' 查看帮助信息")
|
||||||
|
self.stdout.write("输入 'history' 查看对话历史")
|
||||||
|
self.stdout.write("输入 'clear' 清空对话历史")
|
||||||
|
self.stdout.write("输入 'quit' 或 'exit' 退出系统")
|
||||||
|
self.stdout.write("=" * 50)
|
||||||
|
self.stdout.write("💡 提示: 使用 ↑↓ 键浏览历史,Tab 键补全,Ctrl+A/E 跳转行首/尾")
|
||||||
|
self.stdout.write("=" * 50)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 初始化readline
|
||||||
|
readline_config = ReadlineConfig(options.get('history_file'))
|
||||||
|
|
||||||
|
# 初始化AI服务
|
||||||
|
ai_service = AIChatService()
|
||||||
|
self.stdout.write("✅ AI服务初始化成功!")
|
||||||
|
self.stdout.write("")
|
||||||
|
|
||||||
|
# 启动聊天循环
|
||||||
|
self._chat_loop(ai_service, readline_config)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.stderr.write(f"❌ 系统初始化失败: {str(e)}")
|
||||||
|
self.stderr.write("请检查API密钥配置")
|
||||||
|
|
||||||
|
def _chat_loop(self, ai_service, readline_config):
|
||||||
|
"""聊天主循环"""
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
# 获取用户输入
|
||||||
|
user_input = input("👤 您: ").strip()
|
||||||
|
|
||||||
|
if not user_input:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 添加到readline历史
|
||||||
|
readline_config.add_to_history(user_input)
|
||||||
|
|
||||||
|
# 处理特殊命令
|
||||||
|
if user_input.lower() in ['quit', 'exit', 'q']:
|
||||||
|
self.stdout.write("👋 感谢使用,再见!")
|
||||||
|
break
|
||||||
|
elif user_input.lower() == 'help':
|
||||||
|
self._print_help()
|
||||||
|
continue
|
||||||
|
elif user_input.lower() == 'history':
|
||||||
|
ai_service.print_history()
|
||||||
|
continue
|
||||||
|
elif user_input.lower() == 'clear':
|
||||||
|
ai_service.clear_history()
|
||||||
|
self.stdout.write("🗑️ 对话历史已清空")
|
||||||
|
continue
|
||||||
|
elif user_input.lower() == 'readline-help':
|
||||||
|
self._print_readline_help()
|
||||||
|
continue
|
||||||
|
elif user_input.lower() == 'stats':
|
||||||
|
self._print_readline_stats(readline_config)
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 发送消息给AI
|
||||||
|
self.stdout.write("🤖 AI助手正在思考...")
|
||||||
|
response = ai_service.chat(user_input)
|
||||||
|
|
||||||
|
self.stdout.write(f"🤖 AI助手: {response}")
|
||||||
|
self.stdout.write("")
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
self.stdout.write("\n\n👋 感谢使用,再见!")
|
||||||
|
break
|
||||||
|
except EOFError:
|
||||||
|
self.stdout.write("\n👋 再见!")
|
||||||
|
break
|
||||||
|
except Exception as e:
|
||||||
|
self.stderr.write(f"❌ 发生错误: {str(e)}")
|
||||||
|
self.stderr.write("请重试或输入 'quit' 退出")
|
||||||
|
|
||||||
|
def _print_help(self):
|
||||||
|
"""打印帮助信息"""
|
||||||
|
help_text = """
|
||||||
|
📖 帮助信息
|
||||||
|
==========
|
||||||
|
|
||||||
|
基本命令:
|
||||||
|
- 直接输入文字与AI助手对话
|
||||||
|
- help: 显示此帮助信息
|
||||||
|
- history: 查看对话历史
|
||||||
|
- clear: 清空对话历史
|
||||||
|
- readline-help: 显示readline快捷键帮助
|
||||||
|
- stats: 显示readline统计信息
|
||||||
|
- quit/exit/q: 退出系统
|
||||||
|
|
||||||
|
功能特性:
|
||||||
|
- 智能客服问答
|
||||||
|
- 二维码扫描验证(输入 '扫描' 或 '验证' 触发)
|
||||||
|
- 防伪平台信息咨询
|
||||||
|
- 多轮对话支持
|
||||||
|
- 持久化输入历史记录
|
||||||
|
|
||||||
|
使用提示:
|
||||||
|
1. 可以询问平台功能、防伪验证等问题
|
||||||
|
2. 需要验证产品时,AI会主动提供扫描功能
|
||||||
|
3. 支持中文对话,表达自然即可
|
||||||
|
4. 使用 ↑↓ 键快速访问历史输入
|
||||||
|
"""
|
||||||
|
self.stdout.write(help_text)
|
||||||
|
|
||||||
|
def _print_readline_help(self):
|
||||||
|
"""打印readline快捷键帮助"""
|
||||||
|
readline_help = """
|
||||||
|
⌨️ Readline 快捷键帮助
|
||||||
|
=======================
|
||||||
|
|
||||||
|
导航快捷键:
|
||||||
|
↑/↓ - 浏览历史记录
|
||||||
|
Ctrl+A - 跳转到行首
|
||||||
|
Ctrl+E - 跳转到行尾
|
||||||
|
Ctrl+B - 向后移动一个字符
|
||||||
|
Ctrl+F - 向前移动一个字符
|
||||||
|
Ctrl+P - 上一个历史记录 (同 ↑)
|
||||||
|
Ctrl+N - 下一个历史记录 (同 ↓)
|
||||||
|
|
||||||
|
编辑快捷键:
|
||||||
|
Ctrl+U - 删除从光标到行首的内容
|
||||||
|
Ctrl+K - 删除从光标到行尾的内容
|
||||||
|
Ctrl+W - 删除光标前的一个单词
|
||||||
|
Ctrl+D - 删除光标后的一个字符
|
||||||
|
Ctrl+H - 删除光标前的一个字符 (同 Backspace)
|
||||||
|
|
||||||
|
历史搜索:
|
||||||
|
Ctrl+R - 反向搜索历史记录
|
||||||
|
Ctrl+S - 正向搜索历史记录
|
||||||
|
|
||||||
|
补全功能:
|
||||||
|
Tab - 自动补全
|
||||||
|
双击Tab - 显示所有可能的补全
|
||||||
|
|
||||||
|
其他:
|
||||||
|
Ctrl+L - 清屏
|
||||||
|
Ctrl+C - 中断当前操作
|
||||||
|
Ctrl+D - 退出 (EOF)
|
||||||
|
|
||||||
|
💡 提示: 这些快捷键基于 Emacs 编辑模式,与大多数终端应用保持一致
|
||||||
|
"""
|
||||||
|
self.stdout.write(readline_help)
|
||||||
|
|
||||||
|
def _print_readline_stats(self, readline_config):
|
||||||
|
"""打印readline统计信息"""
|
||||||
|
stats = readline_config.get_history_stats()
|
||||||
|
|
||||||
|
if 'error' in stats:
|
||||||
|
self.stderr.write(f"❌ {stats['error']}")
|
||||||
|
return
|
||||||
|
|
||||||
|
self.stdout.write("\n📊 Readline 统计信息")
|
||||||
|
self.stdout.write("=" * 30)
|
||||||
|
self.stdout.write(f"当前历史记录数: {stats['current_length']}")
|
||||||
|
self.stdout.write(f"最大历史记录数: {stats['max_length']}")
|
||||||
|
self.stdout.write(f"历史文件路径: {stats['history_file']}")
|
||||||
|
|
||||||
|
# 检查历史文件大小
|
||||||
|
try:
|
||||||
|
if os.path.exists(stats['history_file']):
|
||||||
|
file_size = os.path.getsize(stats['history_file'])
|
||||||
|
self.stdout.write(f"历史文件大小: {file_size} 字节")
|
||||||
|
else:
|
||||||
|
self.stdout.write("历史文件: 尚未创建")
|
||||||
|
except Exception:
|
||||||
|
self.stdout.write("历史文件: 无法获取信息")
|
||||||
|
|
||||||
|
self.stdout.write("=" * 30)
|
||||||
197
doc/emblem-intro.md
Normal file
197
doc/emblem-intro.md
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
# 徵象AI防伪溯源平台介绍
|
||||||
|
|
||||||
|
## 一、品牌与技术定位
|
||||||
|
|
||||||
|
徵象是广州市诚投科技公司开发的AI驱动智能防伪溯源平台,核心依托"一物一码"技术,通过前沿科技解决包装印刷领域防伪溯源难题。其名称源自古代汉语"验证、分辨假象"之意,精准契合防伪技术本质,致力于为品牌提供可靠的防伪保障,维护市场秩序与品牌声誉。
|
||||||
|
|
||||||
|
诚投科技是一家处于迅速发展期的专业防伪技术企业,依托自有工厂实现自主研发,构建产研销一体化模式,在广州、深圳、佛山分别建立生产基地及营销体系。公司以"赋予商品唯一的数字化包装"为理念,以AI智能算法和多学科融合研究为核心,致力于打破传统防伪技术局限性,结合用户需求为全行业商品提供更安全、可靠的防伪保障。
|
||||||
|
|
||||||
|
### 诚投科技核心价值观
|
||||||
|
|
||||||
|
- **愿景**:成为国民级的防伪验证服务商,让世界充满真实
|
||||||
|
- **使命**:使每件商品包装成为唯一,提升品牌的价值
|
||||||
|
- **价值观**:诚心服务,投入创新
|
||||||
|
|
||||||
|
### 诚投科技服务类别
|
||||||
|
|
||||||
|
- **防伪验证服务**:自主研发的AI人工智能验证系统
|
||||||
|
- **一物一码管理系统定制**:全功能的个性化定制
|
||||||
|
- **防伪标签定制生产**:自有工厂,提供业务连续不间断交付
|
||||||
|
|
||||||
|
## 二、系统概述:徵象是什么?
|
||||||
|
|
||||||
|
徵象是一套基于AI算法的智能二维码防伪验证系统,通过识别二维码在印刷过程中形成的微观差异,实现防伪验证与真伪判断。徵象是智能安全的商品数字化生态平台,依托"一物一码"技术,通过AI智能算法解决传统防伪痛点,为品牌构建安全可靠的数字化包装体系。
|
||||||
|
|
||||||
|
### 徵象提供
|
||||||
|
|
||||||
|
- **防伪验证**(唯一性)
|
||||||
|
- **便捷鉴别**(使用手机即可)
|
||||||
|
- **AI算法支撑**(图像级识别模型)
|
||||||
|
|
||||||
|
## 三、核心技术特性
|
||||||
|
|
||||||
|
### (一)"无复制性原理"的二维码防复制技术
|
||||||
|
|
||||||
|
#### 1. 技术背景
|
||||||
|
|
||||||
|
传统刮刮银二维码存在诸多问题:
|
||||||
|
|
||||||
|
- 消费者不可购前验证,需购买后刮开才能验证产品真伪
|
||||||
|
- 品牌方部分功能受限,无法实现物流追踪、窜货稽查等,还需印刷多个二维码增加包装负担
|
||||||
|
- 刮刮银耐久性差,快递运输易损坏影响品牌形象
|
||||||
|
- 本质为标准数据编码,易被复制
|
||||||
|
|
||||||
|
#### 2. 解决方案
|
||||||
|
|
||||||
|
去除遮盖二维码的刮刮银,回归二维码开放、快捷的初始属性,重点解决开放二维码的防复制问题。
|
||||||
|
|
||||||
|
#### 3. 底层逻辑
|
||||||
|
|
||||||
|
产品包装、标签上的二维码由印刷设备制作,受印刷设备误差、环境、纸张等变量影响,每个二维码都有唯一、随机、微小且不受人为控制的图形特征,天生具备"无复制性原理"特性,就像没有两片完全相同的树叶,任何印刷设备都无法复制出完全一样的二维码。
|
||||||
|
|
||||||
|
徵象通过鉴别这些特征实现防复制功能,系统以"图像指纹"方式判断二维码是否为原件。
|
||||||
|
|
||||||
|
### (二)简单、便捷的二维码鉴别技术
|
||||||
|
|
||||||
|
#### 1. 鉴别工具
|
||||||
|
|
||||||
|
选择用户随身携带的手机作为鉴别工具,并将鉴别程序植入日活跃用户达10.8亿的微信,方便用户获取工具。
|
||||||
|
|
||||||
|
#### 2. 鉴别过程
|
||||||
|
|
||||||
|
用户扫码进入微信小程序,将二维码向屏幕中间靠拢,采集过程仅需1-2秒,随后等待系统反馈结果,过程简单快速,用户体验与微信扫码一致。通过用户行为分析,增加自动亮度感应、更新用户界面、调整图像预处理算法等,用户验证采集效率优化后,使用体验无限接近普通扫码。
|
||||||
|
|
||||||
|
#### 3. 兼容性
|
||||||
|
|
||||||
|
兼容IOS、安卓、鸿蒙等手机系统,以及广角、微距、1200万-1亿像素摄像头等硬件,任何主流智能手机型号均可使用,采集体验无限接近微信扫码。对手机操作系统、影像硬件、软件等多维度分类适配,采用动态配置检测方案,完全兼容的设备数量超1500个,几乎覆盖市场上流通的全部手机型号。
|
||||||
|
|
||||||
|
### (三)精准图像二维码智能鉴别模型
|
||||||
|
|
||||||
|
#### 1. 模型基础
|
||||||
|
|
||||||
|
历经3年开发,基于超千万训练数据量构建的人工智能精准图像算法模型,该模型已申请专利(专利号:ZL2021105XXXX.2 ,授权公告号:CN 115222000B),受法律保护。
|
||||||
|
|
||||||
|
#### 2. 核心能力
|
||||||
|
|
||||||
|
- **快速高质量采集**:支持扫码方向、垂直和水平角度自动纠正,让鉴别过程随意自然
|
||||||
|
- **超高精度验证**:二维码特征验证最高精度达0.03mm,远高于各类型印刷设备生产误差范围,且随数码影像设备升级,精度优势将进一步扩大。通过真实用户数据收集、自主学习及人工测试数据辅助,对二维码真伪的综合验证准确率达99.94%
|
||||||
|
- **高效数据处理**:将存储的二维码特征图像代码化压缩,降低数据存储成本,提高网络数据传输效率,增强服务器数据安全性,兼顾性能与成本
|
||||||
|
- **自主学习升级**:通过持续数据训练和真实业务场景数据获取,不断升级优化,以应对市场变化和科技发展,实现多角度、模糊、轻污损情况下的稳定识别
|
||||||
|
|
||||||
|
## 四、徵象AI防伪对话功能(行业首创)
|
||||||
|
|
||||||
|
### 1. 功能简介
|
||||||
|
|
||||||
|
突破传统防伪场景中消费者扫码仅能获得真假固定答案的模式,植入DeepSeek并经本地化二次开发,实现系统与用户的多轮对话交互,变身"无所不能的AI客服"。通过接入DeepSeek AI技术,实现二维码防伪验证后,支持用户与AI客服多轮自然语言对话,获得丰富产品信息。
|
||||||
|
|
||||||
|
### 2. 核心价值
|
||||||
|
|
||||||
|
用户扫码验证真伪后,可通过与AI客服聊天获取产品信息、使用建议、优惠促销等20多个维度的问题解答。
|
||||||
|
|
||||||
|
### 3. 应用案例
|
||||||
|
|
||||||
|
- **智能推荐搭配产品**:用户查询美妆产品后,AI推荐更适合肤质的配套商品。美妆产品用户验证后询问产品好坏,AI客服回答卖点与功效,同时询问需求并推荐适配配套产品
|
||||||
|
- **识别查询行为并个性化营销**:用户多次查询后,AI主动推荐优惠组合并邀请注册会员。识别到用户1个月内查询5次同款产品真伪,主动推荐优惠套装组合,邀请加入会员享积分福利
|
||||||
|
- **处理假货场景**:AI客服安抚用户、提供维权报告、引导举报并推荐官方渠道。二维码未通过验证时,安慰用户,建议下载"防伪验证报告"维权,邀请参与举报假货得奖金活动,并推荐官方授权渠道购买正品
|
||||||
|
|
||||||
|
## 五、与传统防伪技术的对比
|
||||||
|
|
||||||
|
| 对比维度 | 传统刮刮银二维码 | 徵象AI二维码 |
|
||||||
|
|---------|----------------|-------------|
|
||||||
|
| **验证方式** | 必须刮开才能验证 | 开放扫码,随时验证 |
|
||||||
|
| **功能扩展** | 受限 | 支持物流追踪等全功能 |
|
||||||
|
| **耐久性** | 易磨损 | 持久耐用 |
|
||||||
|
| **防复制性** | 可被复制 | 物理不可复制 |
|
||||||
|
|
||||||
|
## 六、适配与集成方案
|
||||||
|
|
||||||
|
- **支持独立部署或作为插件接入其他一物一码系统**:集成"一物一码"防伪溯源平台几乎全部主流功能,可按需提供服务;对于使用其他友商一物一码系统的用户,可作为防伪验证功能插件,不接触核心业务数据即可轻松兼容,提升防伪性能
|
||||||
|
- **多种二维码载体形式**:二维码载体支持不干胶标签、卡片、吊牌等形式交付,支持设计、材质和附加防伪技术全定制
|
||||||
|
- **定位烫印膜解决方案**:还可供应二维码定位烫印膜,实现二维码直接烫印在包装上,满足去标签化及防伪一体化包装需求,提供二维码定位热转印膜,可将二维码直接烫印在包装上,满足去标签化需求,实现一体化防伪包装
|
||||||
|
|
||||||
|
## 七、应用价值与优势
|
||||||
|
|
||||||
|
### (一)核心应用场景
|
||||||
|
|
||||||
|
- **品牌保护**:AI智能专利防伪,打击假冒伪劣,维护品牌利益
|
||||||
|
- **渠道管理**:完善经销商管理,实现窜货乱价监控
|
||||||
|
- **功能集成**:商品数字平台功能全集成,根据用户需求提供服务
|
||||||
|
- **销量提升**:依托权威第三方背书,拓展线上销售渠道,进行全方位品牌宣传
|
||||||
|
- **用户运营**:构建会员积分体系,通过线上营销引流,增强用户粘性
|
||||||
|
- **兼容适配**:对于已使用其他一物一码系统的用户,可作为防伪验证插件轻松兼容,不涉及核心业务数据,如同在家门口增加一把锁
|
||||||
|
|
||||||
|
### (二)目标价值与商业意义
|
||||||
|
|
||||||
|
徵象不仅是一套安全防伪技术,更是一个数据入口和营销辅助工具:
|
||||||
|
|
||||||
|
- **打击假货,提升用户信任**
|
||||||
|
- 保障产品真实性:让消费者可便捷查验产品真伪及相关信息,如食品行业的生产信息、质量检测报告,电子产品的序列号、保修期等
|
||||||
|
- 保护品牌声誉:减少假冒伪劣产品对品牌形象的损害,降低消费者投诉率(据统计,使用"一物一码"技术的企业消费者投诉率降低20%)
|
||||||
|
- 维护市场秩序:助力品牌规范渠道管理,打击窜货乱价等行为
|
||||||
|
- **降低重复购买风险**
|
||||||
|
- **支持销售数据回流与营销触达**
|
||||||
|
- **预计可带动满意度、销量、复购率提升10%~30%**:市场价值预测:相较于传统防伪,徵象独特功能预期可使消费者满意度、产品销量、复购率等关键营销数据提升10%-30%
|
||||||
|
|
||||||
|
## 八、增值服务
|
||||||
|
|
||||||
|
- **QBS全程质量保障体系**:充分发挥国家质量基础设施作用,以信用、标准、检测、溯源保险(保障)为支撑,运用云计算、大数据、人工智能和区块链等技术,为产品全生命周期提供质量品牌保障,是ISO体系的丰富和发展
|
||||||
|
- **澳门质量品牌国际认证联盟支持**:联盟立足粤港澳大湾区,面向RCEP区域,服务"一带一路",以"一个标准、一次检验、一次认证、多国认可"为使命,助力企业参与全球质量治理
|
||||||
|
- **线上销售渠道拓展**:质易购平台是国内首家全面导入QBS体系的电商平台,汇聚质优价优品牌产品,为企业拓展销售渠道,推动高标准自主创新品牌发展
|
||||||
|
- **全方位品牌宣传支持**
|
||||||
|
- 入驻电商选品平台,如粤港澳质量品牌选品中心及其他线上平台
|
||||||
|
- 提供主流媒体、全国主要城市公交站广告牌等广告宣传渠道
|
||||||
|
- 提供各类品牌展参展机会,增强企业行业影响力
|
||||||
|
- 支持国际市场拓展,帮助企业开拓海外市场空间
|
||||||
|
|
||||||
|
## 九、客户案例
|
||||||
|
|
||||||
|
徵象已服务多个行业知名客户及项目,包括:
|
||||||
|
|
||||||
|
### 国内行业客户
|
||||||
|
|
||||||
|
- **烟草行业**:中国烟草(黄金葉、黃鶴樓1916、雲煙、泰山、重庆中烟等)
|
||||||
|
- **酒类行业**:贵州茅台集团
|
||||||
|
- **电子行业**:AMD、Microsoft、HUAWEI
|
||||||
|
- **快消与美妆行业**:膜法世家、巨子生物、金燕耳
|
||||||
|
- **其他行业**:adidas、Helen Keller、GOODYEAR、德高、志高空调等
|
||||||
|
|
||||||
|
### 国际项目
|
||||||
|
|
||||||
|
- 尼日利亚联邦共和国选民证
|
||||||
|
- 毛里塔尼亚伊斯兰共和国国库支票
|
||||||
|
- 埃塞俄比亚护照模
|
||||||
|
- 科威特国工业公共管理局证书
|
||||||
|
- 缅甸联邦共和国护照热塑膜等
|
||||||
|
|
||||||
|
### 政府项目
|
||||||
|
|
||||||
|
- 广东省农业农村厅"一码追溯"项目,实现食用农产品全链条信息追溯,守护"舌尖上的安全"
|
||||||
|
|
||||||
|
## 十、联系方式
|
||||||
|
|
||||||
|
- **电话**:+862031063634
|
||||||
|
- **邮箱**:info@themblem.com
|
||||||
|
|
||||||
|
### 办公地址
|
||||||
|
|
||||||
|
- **营销研发中心(广州)**:广东省广州市番禺区番禺大道北天安总部中心30-305
|
||||||
|
- **国际贸易部(深圳)**:广东省深圳市罗湖区人民南路天安国际大厦B-1108-1109
|
||||||
|
- **生产基地(佛山)**:广东省佛山市顺德区杏坛镇二环路智富园工业城33-503
|
||||||
|
|
||||||
|
### 官方账号
|
||||||
|
|
||||||
|
抖音、微信、小红书等平台均有官方账号,可关注获取更多信息:
|
||||||
|
|
||||||
|
- **抖音账号**:智能防伪码-徵象
|
||||||
|
- **微信视频账号**:徵象AI防伪码
|
||||||
|
- **小红书账号**:AI防伪码徵象
|
||||||
|
|
||||||
|
## 十一、总结
|
||||||
|
|
||||||
|
徵象通过"无复制性原理"的二维码防复制技术、简单便捷的鉴别技术和精准图像智能鉴别模型,构建了可靠的防伪溯源体系。并推出对话交互型AI防伪功能,将二维码从"验证工具"升级为"智能接口",将防伪系统从"安全卫士"演进为"数据入口"。
|
||||||
|
|
||||||
|
徵象愿与各方携手,共同构建有温度、有智慧的防伪新生态。
|
||||||
|
|
||||||
|
### 技术价值主张
|
||||||
|
|
||||||
|
> "将二维码从验证工具升级为智能接口,使防伪系统从安全卫士演进为数据入口,构建有温度、有智慧的防伪新生态。"
|
||||||
Loading…
x
Reference in New Issue
Block a user