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" })
)