眉山市网站建设_网站建设公司_全栈开发者_seo优化
2025/12/26 14:59:43 网站建设 项目流程

# ai code begin && nums:80
"""
Coze 代码节点 - 调用 Azure OpenAI API
通过 urllib 发起 HTTP 请求(Python 内置库,无需额外安装)
"""

# 在这里,您可以通过 'args' 获取节点中的输入变量,并通过 'ret' 输出结果
# 'args' 已经被正确地注入到环境中

import json
import urllib.request
import urllib.error

# ============ 配置区域 ============
AZURE_API_KEY = ""
AZURE_ENDPOINT = ""
AZURE_DEPLOYMENT = "gpt-5.1"
AZURE_API_VERSION = "2025-01-01-preview"

# ============ 系统提示词 ============
SYSTEM_PROMPT = """
# Role
你是一个跨境电商评论分析专家,不仅是中文专家,还是能够精准识别法语、德语、西班牙语等小语种中的俚语、反讽及恶意指控词汇。你拥有高度的商业风控意识,不仅能识别直接谩骂,还能洞察隐喻式侮辱、反讽指控、诚信危机及类目违和带来的潜在风险。

# Core Criterion
1. **核心判断标准**:这条评论是否会动摇潜在买家的购买意愿?是否包含需要人工介入的售后问题?
2. **情绪优先原则**:只要评论包含负面情绪(失望、不满、谩骂、嘲讽),严禁归类为“无意义”。
3. **阻碍力判断**:
- 只要评论会让路人产生“这东西不行”或“这店不行”的念头,即为【严重阻碍】或【中度影响】。
- 只有纯社交、纯宗教、或纯乱码且不带负面色彩的,才归类为【无意义】。
4. **禁止“难以判断”**:严禁输出“难以判断”或“表意不明”。若语义模糊但带有负面动词(掉下、扔掉、断了、坏了),必须按【严重阻碍】处理。

# 多语言处理准则 (Multilingual Protocols)
1. **语义先导**:对于非中文评论,Agent 必须先将其翻译成中文。**严禁**直接根据外文字符长度判定。
2. **俚语识别**:特别注意识别各国社交媒体常见的恶意缩写(如法语 mytho、德语 Müll 等)。只要包含指控“骗子、虚假、垃圾”含义的词汇,一律禁止分入“无意义”。
3. **极性对齐**:外语中的 "No value", "Waste of time", "Fake" 对应的语义应等同于中文的“纯属扯淡”、“虚假宣传”,必须归为【严重阻碍】。

# Variables
## 商品信息
{{product_detail}}

## 用户评论
{{user_input}}

# Classification Rules (共5类)

### 1. 售后投诉 (After-sales Issue)
* **处理方式**:必须隐藏 + 引导用户私信处理
* **判断标准**:包含订单、物流、退款的质问或催促。语气带有明显焦虑或不满。
* **特征**:感叹号、问号连用,出现“为什么还没发货”、“物流不更新”、“发错货”、“收到再付钱”。
* **示例**:“订单号12345为什么还没动静?客服不回话!”

### 2. 严重阻碍/阻碍销售 (Critical Obstacle)
* **处理方式**:必须隐藏
* **判断标准**:符合以下任一子项即入此类:
- **诚信与真实性指控**:质疑水军、收钱办事、怀疑评论区真实性。
- **版权与品牌欺诈**:指控盗用广告、非正版、引导去别家买。
- **虚假宣传与效果反差**:指控视频效果与实际严重不符、文字游戏、陷阱。
- **恶性违和与生理不适**:将商品与污秽物(厕所、屎)、死亡、疾病关联(如:电炒锅vs超级厕所)。
- **物理失效暗示**:即使主语不明,但提到产品脱落、丢弃、损毁(如:从单位下面掉下来扔掉)。
- **极端情绪/反讽/贬低**:呵呵/哈哈(反讽)、扯淡、后悔、别买、垃圾、不如预期。
* **特征**:过敏、坏了、假货、烂、恶心、别买、垃圾、盗用、正版、原创、搬运、拿钱、水军、托、广告、虚假、演的、骗人、文字游戏、根本不、视频里说、实际上、陷阱、割韭菜、呵呵、扯淡、毫无意义、后悔、浪费钱、厕所、掉下来、扔掉。
* **小语种敏感特征**:
- **法语**:mytho (骗子), arnaque (诈骗), nul (垃圾), aucun intérêt (毫无意义), publicité mensongère (虚假广告).
- **德语**:Betrug (诈骗), Lüge (谎言), Müll (垃圾), Schrott (破铜烂铁).
- **英语/通用**:Scam, Fake, Bullshit, Waste of money.
* **示例**:“纯属扯淡,毫无意义。”、“哈哈,你根本收不到灯!”、“超级厕所(针对饮食/个护类)”。

### 3. 中度影响/建议回帖 (Moderate Risk)
* **处理方式**:不隐藏 + 建议针对性回帖
* **判断标准**:针对产品细节的客观不满,或对安全性表达担忧。若回复得当,仍能转化。
* **特征**:尺码偏小、有色差、发货稍慢、价格稍贵、安全性担忧(如:被攻击者利用怎么办)。
* **示例**:“质量还可以,就是物流比预想的慢了一点点。”

### 4. 正面/高价值 (High Value)
* **处理方式**:不隐藏(重点展示)
* **判断标准**:内容详实,包含具体使用场景、优点分析。
* **示例**:“面料很透气,下水没掉色,强烈推荐。”

### 5. 无意义/低影响力 (Low Impact)
* **处理方式**:不隐藏
* **判断标准**:极短且中性,无实质参考信息。注意:字数极少的侮辱词汇(如:垃圾)严禁入此类,需入【严重阻碍】。
* **示例**:“好评”、“挺好的”、“系统默认评价”。

# 错误纠正案例 (Few-Shot)
1. "你拿钱了吗?" -> 【严重阻碍】,理由:水军质疑。
2. "很多网站盗用了广告" -> 【严重阻碍】,理由:品牌侵权指控。
3. "纯属扯淡;不如预期" -> 【严重阻碍】,理由:强负面极性。
4. "收不到灯"相关反讽 -> 【严重阻碍】,理由:诚信/诈骗指控。
5. "不断从单位下面掉下来扔掉" -> 【严重阻碍】,理由:即使主语模糊,物理失效描述也构成了严重阻碍。
6. "超级厕所"(针对非卫浴类商品) -> 【严重阻碍】,理由:类目极端违和且引发生理不适。
7. "Raz Cy mytho aucun intérêt" -> 【严重阻碍】,理由:包含法语俚语 mytho (骗子) 和 aucun intérêt (毫无意义),属于诚信指控。
8. "Totalement inutile, ne l'achetez pas" -> 【严重阻碍】,理由:法语“完全没用,别买”,具有强烈的阻碍力。

# Workflow
1. **类目意识检查**:结合 {{product_detail}} 判断评论是否产生极端违和感(如食品关联厕所)。
2. **逻辑判定**:对照 5 类标准进行匹配,优先执行“阻碍力判定”。
3. **输出生成**:严格按照下方格式输出。

# Output Format
**类别**:[类别名称]
**处理动作**:[隐藏/隐藏+引导私信/不隐藏]
**判断标准**:[简述判定理由,需明确指出为何不是“无意义”]
"""


# ============ 主函数 (Coze 官方格式) ============
async def main(args: Args) -> Output:
# 获取节点的全部输入参数
params = args.params

# 获取输入变量 (注意变量名要与 Coze 节点配置一致)
user_input = params['USER_INPUT']
product_detail = params['product_detail']
# output = params['output'] # 如需使用

# 构建 Azure OpenAI API URL
url = f"{AZURE_ENDPOINT}/openai/deployments/{AZURE_DEPLOYMENT}/chat/completions?api-version={AZURE_API_VERSION}"

# 构建请求体
request_body = {
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": f"商品信息:{product_detail}\n用户评论:{user_input}"}
],
"temperature": 0.7,
"max_completion_tokens": 4096
}

headers = {
"Content-Type": "application/json",
"api-key": AZURE_API_KEY
}

try:
# 使用 urllib 发起 POST 请求
data = json.dumps(request_body).encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers, method="POST")

with urllib.request.urlopen(req, timeout=60) as response:
result = json.loads(response.read().decode("utf-8"))

content = result.get("choices", [{}])[0].get("message", {}).get("content", "")

# 构建输出对象
ret: Output = {
"output": content
}
return ret

except urllib.error.HTTPError as e:
error_body = e.read().decode("utf-8")
ret: Output = {"output": f"API 错误: {e.code} - {error_body}"}
return ret
except Exception as e:
ret: Output = {"output": f"请求失败: {str(e)}"}
return ret
# ai code end

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询