takaaki-mizuno/llm-json-适配器

0.1.0 2024-04-28 02:52 UTC

This package is auto-updated.

Last update: 2024-08-28 04:24:47 UTC


README

这是什么?

当使用系统中的LLM时,你通常希望以JSON格式获取输出结果:OpenAPI的GPT API有一个名为函数调用的机制,可以返回JSON,但谷歌的Gemini似乎没有这个功能。

因此,我创建了一个包装库来切换LLM并获取JSON格式的结果。这个库可以做到以下几点。

  • 允许你定义在JSON Schema中你想要获取的结果
  • 在LLM之间切换(目前支持OpenAI的GPT和谷歌的Gemini)。
  • 如果JSON检索失败,则重试指定次数

安装

composer require takaaki-mizuno/llm-json-adapter

如何使用

使用以下代码获取JSON格式的结果。

OpenAI

$instance = new LLMJsonAdapter(
    providerName: "openai",
    attributes: [
        "api_key" => "[API-KEY]",
        "model" => "gpt-3.5-turbo",
    ],
    maximumRetryCount: 3,
    model: "gpt-3.5-turbo",
    defaultLanguage: "en"
);

$response = new \TakaakiMizuno\LLMJsonAdapter\Models\Response(
    name: "response data name",
    description: "response data description",
    schema: [JSON SCHEMA]
);

谷歌Gemini

$instance = new LLMJsonAdapter(
    providerName: "google",
    attributes: [
        "api_key" => "[API-KEY]",
        "model" => "gemini-1.5-pro-latest",
    ],
    maximumRetryCount: 3,
    defaultLanguage: "en"
);

$response = new \TakaakiMizuno\LLMJsonAdapter\Models\Response(
    name: "response data name",
    description: "response data description",
    schema: [JSON SCHEMA]
);

BedRock

$instance = new LLMJsonAdapter(
    providerName: "bedrock",
    attributes: [
        'accessKeyId' => '[ACCESS-KEY]',
        'secretAccessKey' => '[SECRET-KEY]',
        'model' => 'anthropic.claude-3-haiku-20240307-v1:0',
    ],
    maximumRetryCount: 3,
    defaultLanguage: "en"
);

$response = new \TakaakiMizuno\LLMJsonAdapter\Models\Response(
    name: "response data name",
    description: "response data description",
    schema: [JSON SCHEMA]
);

Ollama

$instance = new LLMJsonAdapter(
    providerName: "ollama",
    attributes: [
        'url' => "https://:11434",
        'model' => 'llama3',
    ],
    maximumRetryCount: 3,
    defaultLanguage: "en"
);

$response = new \TakaakiMizuno\LLMJsonAdapter\Models\Response(
    name: "response data name",
    description: "response data description",
    schema: [JSON SCHEMA]
);