跳转至

Model request

Agently AI应用开发框架已经为开发者适配了市面上主流的商用模型API,并且通过OAIClient这个请求插件,帮助开发者快速请求适配了OpenAI请求格式的本地模型服务。

您可以通过查看本页了解如何为您的Agent工厂或是Agent实例配置驱动的模型,无论是对Agent工厂还是单个Agent实例,您都可以使用.set_settings()方法进行设置项配置,本页内容中所有案例都以单个Agent实例作为配置对象。

OpenAI

文本/对话请求

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OpenAI")
        .set_settings("model.OpenAI.auth", { "api_key": "<Your-API-Key>" })
        # 如果需要切换模型,可参考模型清单: https://platform.openai.com/docs/models/overview
        # 默认模型: gpt-3.5-turbo
        .set_settings("model.OpenAI.options", { "model": "gpt-3.5-turbo" })
        # 如果您需要使用转发Base URL,通常为https://base_domain_name.com/v1这样的格式
        # .set_settings("model.OpenAI.url", "<Your-Base-URL>")
        # 如果您需要使用本地代理,确定本地代理的host和port后,可以按如下方式设置
        # .set_settings("proxy", "http://127.0.0.1:7890")
)

Vision模型请求

我们为GPT-4-Vision提供了请求方案。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OpenAI")\
        .set_settings("model.OpenAI.auth", { "api_key": "<Your-API-Key>" })\
        .set_settings("model.OpenAI.options", { "model": "gpt-4-vision-preview" })
)

# 请求样例
result = (
    agent
        .files("https://cdn.hk01.com/di/media/images/dw/20200921/384674239925587968.jpeg/KJA2TRK9dzKTpbuXoVyiyz-DjNXw5N9RATMoCwEzKAs?v=w1280")
        .output({
            "observe": ("String", "Describe what can you see in this picture"),
            "explain": ("String", "Explain how can we thinking about this picture"),
            "tags": [("String", "Classify tag that you will give to this picture")]
        })
        .start("vision")
)
for key, content in result.items():
    print(key, ": ", content)

各类OpenAI及OpenAI格式like的中转服务

因为各类中转服务可能在包裹的时候,隐藏了一些条件(比如消息列不能有两条system消息,或是消息列必须严格遵循User-Assistant-User这样的顺序),我们推荐您使用我们定制的OAIClient进行请求,而不要使用OpenAI的原生客户端。我们在OAIClient里为您针对各种消息列异常进行了适配。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth", { "api_key": "<中转服务商提供的API-Key>" })
        .set_settings("model.OAIClient.options", { "model": "<中转服务商许可的模型名>" })
        # 如果您需要使用转发Base URL,通常为https://base_domain_name.com/v1这样的格式
        .set_settings("model.OAIClient.url", "<中转服务商为您提供的url,注意,不需要带上/chat/completions这部分>")
)

Microsoft Azure OpenAI

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "AzureOpenAI")
        .set_settings("model.AzureOpenAI.auth", {
            "api_key": "<Your-API-Key>",
            "api_version": "<Your-API-Version>",
            "azure_endpoint": "<Your-Azure-EndPoint>",
        })
        # 如果需要切换模型,可参考模型清单: https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models
        # 默认模型: gpt-35-turbo
        .set_settings("model.AzureOpenAI.options", { "model": "gpt-35-turbo" })
)

Google Gemini

目前适配的模型为Google Gemini Pro 1.0的betav1版本,该版本获取API-Key之后可免费使用,每分钟限制请求60次。

暂未适配Google的其他模型,如有需要可以在我们的Github Issue发起适配申请。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "Google")
        .set_settings("model.Google.auth", { "api_key": "<Your-API-Key>" })
        # 如果您需要使用本地代理,确定本地代理的host和port后,可以按如下方式设置
        # .set_settings("proxy", "http://127.0.0.1:7890")
)

Claude

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "Claude")
        .set_settings("model.Claude.auth", { "api_key": "<Your-API-Key>" })
        # 如果需要切换模型,可参考模型清单: https://docs.anthropic.com/claude/docs/models-overview
        # 默认模型: claude-3-sonnet-20240229
        .set_settings("model.Claude.options", { "model": "claude-3-opus-20240229" })
)

百度文心大模型

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "ERNIE")\
        .set_settings("model.ERNIE.auth", {
            # 使用AIStudio的Access Token
            "aistudio": "<Your-Baidu-AIStudio-Access-Token>",
            # 使用千帆平台的Access Token,注意,如果设置了AIStudio,会优先使用AIStudio
            #"qianfan": "<Your-Baidu-Qianfan-Access-Token>",
        })
        # 如果需要切换模型,可参考模型清单: https://github.com/PaddlePaddle/ERNIE-SDK/tree/develop/erniebot#python%E6%8E%A5%E5%8F%A3
        # 默认模型: ernie-4.0
        .set_settings("model.ERNIE.options", { "model": "ernie-4.0" })
)

因为千帆平台的Access Token需要特定的生成方法,我们为开发者准备了以下便利的生成脚本:

echo "此脚本由AI应用开发框架项目Agently.tech提供"
echo "将帮助您通过输入百度云的API Key和Secret Key创建百度云Access Token,用于API调用"
echo "更多相关信息可以阅读:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ilkkrb0i5"
read -p "请输入您的API Key: " api_key
read -p "请输入您的Secret Key: " secret_key
access_token=$(curl "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${api_key}&client_secret=${secret_key}" | awk -F'"' '/access_token/{print $14}')
echo ""
echo "请复制下面的Access Token结果,Happy Coding!"
echo $access_token

您也可以直接点击这里下载使用

智谱GLM

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "ZhipuAI")
        .set_settings("model.ZhipuAI.auth", { "api_key": "<Your-API-Key>" })
        # 如果需要切换模型,可参考模型清单: https://open.bigmodel.cn/dev/api#language
        # 默认模型: glm-4
        .set_settings("model.ZhipuAI.options", { "model": "glm-4" })
)

通义千问qwen

因为qwen API适配了OpenAI的接口格式规范,我们推荐您使用OAIClient进行请求。

import Agently
agent = (
    Agently.create_agent()
    .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth.api_key", "<Your-API-Key>")
        # 使用DashScope专门适配的API Base URL
        .set_settings("model.OAIClient.url", "https://dashscope.aliyuncs.com/compatible-mode/v1")
        # 如果需要切换模型,可参考模型清单:https://help.aliyun.com/zh/dashscope/developer-reference/openai-file-interface
        .set_settings("model.OAIClient.options.model", "qwen-turbo")
)

月之暗面Kimi

因为Kimi API适配了OpenAI的接口格式规范,我们推荐您使用OAIClient进行请求。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth", { "api_key": "<Your-API-Key>" })
        # 使用月之暗面的API Base URL
        .set_settings("model.OAIClient.url", "https://api.moonshot.cn/v1")
        # 如果需要切换模型,可参考模型清单: https://platform.moonshot.cn/docs/intro#%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8
        .set_settings("model.OAIClient.options", { "model": "moonshot-v1-8k" })
)

您也可以使用我们针对Kimi提供的适配方案(该方案可能不再更新维护)

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "Kimi")
        .set_settings("model.Kimi.auth", { "api_key": "<Your-API-Key>" })
        # 如果需要切换模型,可参考模型清单: https://platform.moonshot.cn/docs/intro#%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8
        # 默认模型: moonshot-v1-8k
        .set_settings("model.Kimi.options", { "model": "moonshot-v1-8k" })
)

MiniMax

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "MiniMax")
        .set_settings("model.MiniMax.auth", {
            "group_id": "<Your-Group-ID>",
            "api_key": "<Your-API-Key>",
        })
        # 如果需要切换模型,可参考模型清单: https://www.minimaxi.com/document/guides/chat-model/V2?id=65e0736ab2845de20908e2dd
        # 默认模型: abab5.5-chat
        .set_settings("model.MiniMax.options", { "model": "abab5.5-chat" })
)

Mixtral

因为Mixtral API适配了OpenAI的接口格式规范,我们将使用OAIClient进行请求。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth", { "api_key": "<Your-API-Key>" })
        # 使用Mixtral的API Base URL
        .set_settings("model.OAIClient.url", "https://api.mistral.ai/v1")
        # 如果需要切换模型,可参考模型清单: https://docs.mistral.ai/platform/endpoints/
        .set_settings("model.OAIClient.options", { "model": "open-mistral-7b" })
)

深度求索 DeepSeek 2

直接把商用大模型推理价格打成骨折(成本立减99%)的DeepSeek 2,也可以使用OAIClient进行请求。

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth.api_key", "<Your-API-Key>")
        # 使用DeepSeek 2的API Base URL
        .set_settings("model.OAIClient.url", "https://api.deepseek.com/")
        # 如果需要切换模型,可参考模型清单:https://platform.deepseek.com/api-docs/zh-cn/pricing/
        .set_settings("model.OAIClient.options.model", "deepseek-chat")
)

硅基流动 SiliconFlow

import Agently
agent = (
    Agently.create_agent()
        .set_settings("current_model", "OAIClient")
        .set_settings("model.OAIClient.auth", { "api_key": "<Your-API-Key>" })
        # 使用SiliconFlow的API Base URL
        .set_settings("model.OAIClient.url", "https://api.siliconflow.cn/v1")
        # 如果需要切换模型,可参考模型清单:https://docs.siliconflow.cn/reference/chat-completions-1
        .set_settings("model.OAIClient.options", { "model": "alibaba/Qwen1.5-110B-Chat" })
)