laravel的service调用dify的API

2 篇文章 0 订阅
2 篇文章 0 订阅

通过创建service实现dify的api功能

程序代码中__construct是舒适化,调用了自定义的configservice实现了读取缓存内容。

putwcard实现了dify中对某个知识库的某一个文档进行了段落的添加。

<?php

namespace App\Services;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use App\Services\ConfigService;

class DifyService
{
    public function __construct()
    {
        // 获取缓存中的配置数据
        $ConfigService = new ConfigService(); //自己定义的config服务
        $configs = $ConfigService->getCachedConfig(); //获取缓存配置数据
        // Dify API基本信息
        define('DIFY_API_KEY', $configs["AI_api_key"]); //dify的api_key
        define('DIFY_ENDPOINT', $configs["AI_api"]); // dify的地址例如 "https://api.dify.ai"

    }
    /*新增分段
        参数说明:
        input_text:输入文本
        answer_text:答案文本
        keywords_list:关键词列表(数组)
        dataset_id:知识库ID
        document_id:文档ID
*/
    public function segments_add($input_text, $answer_text, $keywords_list, $dataset_id, $document_id)
    {
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . DIFY_API_KEY,
        ]; //dify标准头
        // 构造数组,此内容根据dify实际api需要传递相应数据。
        $data = [
            'segments' => [
                [
                    'content' => $input_text,
                    'answer' => $answer_text,
                    'keywords' => $keywords_list
                ]
            ]
        ];
        // 将数组转换为JSON字符串
        $data = json_encode($data, JSON_UNESCAPED_UNICODE);

        // 初始化cURL会话
        $ch = curl_init();
        // dump($data);
        //dump(DIFY_ENDPOINT . '/datasets/' . DIFY_dataset_id . '/documents/' . DIFY_document_id . '/segments');
        // 设置cURL选项
        //第三个参数请根据dify实际需要修改。
        curl_setopt(
            $ch,
            CURLOPT_URL,
            DIFY_ENDPOINT . '/datasets/' . $dataset_id . '/documents/' . $document_id . '/segments'
        );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        // 执行cURL会话
        $response = curl_exec($ch);

        // 关闭cURL会话
        curl_close($ch);
        //dump($response);

        // 解码并处理响应
        /*
        if ($response !== false) {
            $responseData = json_decode($response, true);
            if (json_last_error() === JSON_ERROR_NONE) {
                dump("知识库查询结果:", $responseData['answer'] ?? "无结果");
            } else {
                dump("JSON解码错误:", json_last_error_msg());
            }
        } else {
            dump("cURL错误:", curl_error($ch));
        }
            */
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值