janfish / underwrite-agent
承保条件分析SDK
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/janfish/underwrite-agent
Requires
- php: >=7.1
- ext-json: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2025-12-31 00:06:09 UTC
README
一个用于承保条件分析的 PHP SDK,基于 Dify 工作流 API 实现。该 SDK 提供单次和批量分析功能,帮助用户快速评估保险承保条件。
功能特性
- 单次承保条件分析
- 批量承保条件分析(异步协程实现)
- 完整的错误处理机制
- 可配置的超时设置
- JSON 格式化结果返回
安装
使用 Composer 安装:
composer require janfish/underwrite-agent
环境要求
- PHP >= 7.4
- Guzzle HTTP Client >= 7.0
- Dify 工作流 API 访问权限
配置
在使用 SDK 之前,您需要:
- 部署或访问 Dify 实例
- 创建工作流用于承保条件分析
- 获取 API 密钥
快速开始
单次分析
<?php require_once 'vendor/autoload.php'; use Janfish\UnderwriteAgent\UnderwriteAgent; use Janfish\UnderwriteAgent\Exception\Exception; use Janfish\UnderwriteAgent\Exception\RuntimeException; // 初始化SDK $baseUrl = 'https://your-dify-instance.com'; // 您的Dify实例地址 $apiKey = 'your-api-key'; // 您的API密钥 try { $agent = new UnderwriteAgent($baseUrl, $apiKey, ['timeout' => 120]); // 设置分析参数 $params = [ 'company' => '中意', 'type' => '套单', 'car' => '燃油 旧车', 'region' => '只保:川C,E,F,B,H,J,L,Z,X,S,Y,A,G', 'policy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'agentPolicy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'VCIAgentRate' => '0.25', 'TCIAgentRate' => '0.25', 'NCAgentRate' => '0', 'TCIRate' => '0.23', 'VCIRate' => '0.23', 'NCRate' => '0' ]; // 执行单次分析 $result = $agent->analyze($params, 'test-user'); print_r($result); } catch (Exception $e) { echo "业务异常: " . $e->getMessage() . "\n"; } catch (RuntimeException $e) { echo "系统异常: " . $e->getMessage() . "\n"; } catch (\Exception $e) { echo "未知异常: " . $e->getMessage() . "\n"; }
批量分析
<?php require_once 'vendor/autoload.php'; use Janfish\UnderwriteAgent\UnderwriteAgent; use Janfish\UnderwriteAgent\Exception\Exception; use Janfish\UnderwriteAgent\Exception\RuntimeException; // 初始化SDK $baseUrl = 'https://your-dify-instance.com'; $apiKey = 'your-api-key'; try { $agent = new UnderwriteAgent($baseUrl, $apiKey, ['timeout' => 120]); // 准备批量请求 $requests = [ [ 'params' => [ 'company' => '中意', 'type' => '套单', 'car' => '燃油 旧车', 'region' => '只保:川C,E,F,B,H,J,L,Z,X,S,Y,A,G', 'policy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'agentPolicy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'VCIAgentRate' => '0.25', 'TCIAgentRate' => '0.25', 'NCAgentRate' => '0', 'TCIRate' => '0.23', 'VCIRate' => '0.23', 'NCRate' => '0' ], 'user' => 'batch-user-1' ], [ 'params' => [ 'company' => '平安', 'type' => '新车', 'car' => '新能源 新车', 'region' => '全国', 'policy' => '新车,家自车,首保', 'agentPolicy' => '新车,家自车,首保', 'VCIAgentRate' => '0.3', 'TCIAgentRate' => '0.25', 'NCAgentRate' => '0.05', 'TCIRate' => '0.23', 'VCIRate' => '0.23', 'NCRate' => '0.05' ], 'user' => 'batch-user-2' ] ]; // 执行批量分析 $batchResult = $agent->batchAnalyze($requests); foreach ($batchResult as $result) { if ($result['success']) { echo "请求 " . $result['index'] . " 成功:\n"; print_r($result['data']); } else { echo "请求 " . $result['index'] . " 失败: " . $result['error'] . "\n"; } } } catch (Exception $e) { echo "业务异常: " . $e->getMessage() . "\n"; } catch (RuntimeException $e) { echo "系统异常: " . $e->getMessage() . "\n"; } catch (\Exception $e) { echo "未知异常: " . $e->getMessage() . "\n"; }
综合分析
<?php require_once 'vendor/autoload.php'; use Janfish\UnderwriteAgent\UnderwriteAgent; use Janfish\UnderwriteAgent\Exception\Exception; use Janfish\UnderwriteAgent\Exception\RuntimeException; // 初始化SDK $baseUrl = 'https://your-dify-instance.com'; $apiKey = 'your-api-key'; try { $agent = new UnderwriteAgent($baseUrl, $apiKey, ['timeout' => 120]); // 准备批量请求 $requests = [ [ 'params' => [ 'company' => '中意', 'type' => '套单', 'car' => '燃油 旧车', 'region' => '只保:川C,E,F,B,H,J,L,Z,X,S,Y,A,G', 'policy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'agentPolicy' => '续保,家自车,套单,非过户,含车损车龄10年以内;无车损车龄15年以内; 川F费用20%,交强3%', 'VCIAgentRate' => '0.25', 'TCIAgentRate' => '0.25', 'NCAgentRate' => '0', 'TCIRate' => '0.23', 'VCIRate' => '0.23', 'NCRate' => '0' ], 'user' => 'batch-user-1' ], [ 'params' => [ 'company' => '平安', 'type' => '新车', 'car' => '新能源 新车', 'region' => '全国', 'policy' => '新车,家自车,首保', 'agentPolicy' => '新车,家自车,首保', 'VCIAgentRate' => '0.3', 'TCIAgentRate' => '0.25', 'NCAgentRate' => '0.05', 'TCIRate' => '0.23', 'VCIRate' => '0.23', 'NCRate' => '0.05' ], 'user' => 'batch-user-2' ] ]; // 执行综合分析 $compositeResult = $agent->compositeAnalyze($requests); print_r($compositeResult); } catch (Exception $e) { echo "业务异常: " . $e->getMessage() . "\n"; } catch (RuntimeException $e) { echo "系统异常: " . $e->getMessage() . "\n"; } catch (\Exception $e) { echo "未知异常: " . $e->getMessage() . "\n"; }
API 方法
analyze(array $params, string $user = 'default'): array
执行单次承保条件分析
$params: 分析参数数组,包含以下字段:company: 保险公司名称type: 保单类型car: 车辆类型region: 承保区域policy: 保单政策agentPolicy: 代理人政策VCIAgentRate: 车损险代理费率TCIAgentRate: 三者险代理费率NCAgentRate: 无法找到代理费率TCIRate: 三者险费率VCIRate: 车损险费率NCRate: 无法找到费率
$user: 用户标识(可选,默认为'default')
返回值:解析后的业务数据(JSON 格式化后的内容)
batchAnalyze(array $requests, int $concurrency = 5): array
执行批量承保条件分析clear
并发请求分析多个承保信息
$requests: 请求数组,每个元素包含params和user字段$concurrency: 并发数限制,默认为5
返回值:包含每个请求结果的数组,每个元素包含:
index: 请求索引success: 是否成功error: 错误信息(失败时)data: 解析后的业务数据(成功时)
compositeAnalyze(array $requests): array
执行综合承保条件分析
区别于batchAnalyze,综合承保条件分析是将多组承保条件交给大模型一次分析完成,前者则是多次请求大模型实现,综合承保条件分析执行速度更快
$requests: 请求数组,每个元素包含params和user字段
返回值:解析后的业务数据(JSON 格式化后的内容)
配置选项
SDK 支持以下配置选项:
timeout: 请求超时时间(秒),默认 120 秒
$agent = new UnderwriteAgent($baseUrl, $apiKey, [ 'timeout' => 180 // 设置为180秒超时 ]);
返回值格式
SDK 方法返回 API 响应中outputs.output字段 JSON 格式化后的数据。具体格式取决于您的 Dify 工作流配置。
错误处理
SDK 提供两种异常类型:
Janfish\UnderwriteAgent\Exception\Exception: 业务异常Janfish\UnderwriteAgent\Exception\RuntimeException: 系统异常
开发与测试
项目包含以下演示文件:
demo/index.php: 主要演示文件