Skip to content

Use Cases

sungaowei edited this page Oct 16, 2026 · 2 revisions

使用场景 (Use Cases)

English Version | 简体中文


下述所有使用场景本质上都是同一模式:一个 state(业务数据或图像内容)加上一个以自定义名称为键的问题集合。所选择的问题原语决定了答案的数据形态。

业务场景 典型评估问题 推荐原语
客服工单智能分流 — 在人工介入前将工单分派给对应业务组 应该分派到哪个部门?是否涉及退费?紧急程度如何? Choice, Noul, Score
内容安全风控合规 — 在用户生成内容入库前实时拦截违规内容 是否存在垃圾营销或钓鱼?违反哪项社区守则?违规严重度如何? Noul, Choice, Score
意图识别与情绪洞察 — 将自由非结构化文本快速结构化 客户的主要意图是什么?情绪倾向是平静还是愤怒?是否有流失风险? Choice, Noul
多模态核验与定位 — 对带有截图、附件或单据的多模态工单进行核查 单据中是否包含公章?公章在图片中的什么位置?发票金额是否清晰? Noul, Box, Score
大模型 (LLM) 质检与对齐评测 — 在将回答展现给用户前对其打分 回答是否完全基于给定的知识库?格式是否合规?回答质量几分? Noul, Score
AI Agent 流水线守卫与分流 — 智能体流水线中的分支决策路由 当前任务是否超出工具处理范围?需要人工审批吗?应唤起哪个技能? Noul, Choice
数据清洗与知识库打标 — 对海量非结构化存量数据批量归档打标 这篇文档属于哪一类目?是否适用于生产环境? Choice, Noul

经典实战示例:客服工单自动分流处理

package main

import (
	"context"
	"log"

	typesafe "github.com/guchengod/typesafe-sdk-go"
)

type Ticket struct {
	ID       int
	Subject  string
	Body     string
	Customer string
}

func main() {
	client, _ := typesafe.NewClient()
	defer client.Close()

	ctx := context.Background()

	// 定义通用的评估问题规则
	questions := typesafe.Questions{
		"queue": typesafe.NewChoice(
			map[string]any{
				"billing":   "涉及扣款、退费、发票或账单异常",
				"technical": "系统崩溃、页面报错或 API 接口异常",
				"account":   "账号被封、密码重置或权限申请",
				"other":     nil,
			},
			typesafe.WithInstructions("该工单应指派到哪个工作队列?"),
		),
		"needs_human": typesafe.NewNoul(
			"",
			typesafe.WithInstructions("该工单是否必须由人工客服介入,还是可以通过自动化机器人回复?"),
		),
		"priority": typesafe.NewScore(
			[]any{"日常普通", "中等优先(48小时内)", "最高紧急(严重故障)"},
			typesafe.WithInstructions("客户情绪和问题的严重性如何?"),
		),
	}

	tickets := []Ticket{
		{ID: 101, Subject: "多扣了 50 美元", Body: "上个月账单重复扣了两次费用,请马上处理!", Customer: "VIP客户"},
	}

	for _, ticket := range tickets {
		state := map[string]any{
			"subject":  ticket.Subject,
			"body":     ticket.Body,
			"customer": ticket.Customer,
		}

		response, err := client.SystemOne(ctx, state, questions)
		if err != nil {
			log.Printf("工单 #%d 评估失败: %v", ticket.ID, err)
			continue
		}

		queueAns := response.Choices()["queue"]
		needsHumanAns := response.Nouls()["needs_human"]
		priorityAns := response.Scores()["priority"]

		log.Printf("工单 #%d -> 队列: %s (置信度: %.2f) | 需人工: %v (p=%.2f) | 优先级分: %.1f",
			ticket.ID,
			queueAns.Choice, queueAns.Confidence,
			needsHumanAns.Noul > 0.6, needsHumanAns.Noul,
			priorityAns.Score,
		)

		// 基于置信度的三段式自动化流转
		if queueAns.Confidence >= 0.85 {
			log.Printf("自动分流工单 #%d 至队列 [%s]", ticket.ID, queueAns.Choice)
		} else {
			log.Printf("工单 #%d 置信度较低 (%.2f),流转至人工初筛池", ticket.ID, queueAns.Confidence)
		}
	}
}

置信度三段式路由模式 (Confidence-Gated Routing)

每个 Choice 和 Score 答案都包含 Confidence 置信度指标(0.0 ~ 1.0)。在生产级架构中,推荐采用三段式决策门禁:

  1. 高置信度 ($\ge 0.85$):模型判断非常笃定,可直接触发无人值守的全自动分支逻辑(如自动退款、自动打标封禁);
  2. 中置信度 ($0.50 \sim 0.85$):模型有明确倾向但存在少许歧义,建议将答案作为建议推荐给人工操作员做二次复核;
  3. 低置信度 ($< 0.50$):模型主动声明“内容无法明确裁决”,系统应平滑降级至通用的人工兜底池。

批处理与实时流式

同一个 Client 实例既支持实时 API 服务的单次判定,也支持海量离线数据的并发批量打标。针对高吞吐流水线,建议复用单个 Client 并结合信号量控制在途并发数量——参见 并发控制 (Concurrency)。

Clone this wiki locally