AI大模型API入门实战
本文旨在为读者提供一篇关于AI大模型API入门实战的全面指南。文章将从基础知识入手,详细介绍AI大模型API的概念、原理和应用场景,帮助读者建立对AI大模型API的整体认识。接下来,文章将深入剖析如何利用AI大模型API进行实战操作,包括API的调用方法、参数设置、数据处理等环节。通过实际案例和代码演示,使读者能够轻松上手AI大模型API的开发与应用。最后,本文还将探讨AI大模型API的未来发展趋
目录
本文旨在为读者提供一篇关于AI大模型API入门实战的全面指南。文章将从基础知识入手,详细介绍AI大模型API的概念、原理和应用场景,帮助读者建立对AI大模型API的整体认识。接下来,文章将深入剖析如何利用AI大模型API进行实战操作,包括API的调用方法、参数设置、数据处理等环节。通过实际案例和代码演示,使读者能够轻松上手AI大模型API的开发与应用。最后,本文还将探讨AI大模型API的未来发展趋势,为读者在AI领域的技术进步提供参考和启示。整篇文章将理论与实践相结合,为初学者和有一定基础的读者提供一个全面、实用的AI大模型API入门实战教程。
本文尽量以最简单的demo展示其各种功能,开箱即用,详细使用以及其他功能可参照官网
目录
准备apiKey
在线大模型的API调用需要有apiKey、api_url
OpenAI由于网络限制可能无法使用,可以使用一些代理网站,或者国内的大模型,接口一般都是兼容的。
代理网站如chatMoss、大模型API等,注册后可以使用多个厂家的多种大模型。
也可以直接使用国内的大模型如智谱、千问、deepseek,一般注册就送token。这里使用智谱AI进行测试,查看apiKey:https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys
简单的SDK调用
示例1:一次输出全部内容
# 加载.env文件的配置
import os
from dotenv import load_dotenv
load_dotenv()
# 生成client,指定api_key和base_url
from openai import OpenAI
client = OpenAI(api_key=os.getenv('ZHIPU_API_KEY'), base_url=os.getenv('ZHIPU_BASE_URL'))
# 调用SDK进行对话,并设置api_key可用的模型
chat = client.chat.completions.create(
model="glm-4",
messages=[
{'role': 'user', 'content': '我正在写一篇关于 AI大模型API入门实战 的文章,请帮我生成一个摘要。'},
]
)
# 打印最终的输出内容
print(chat.choices[0].message.content)
示例2:流式输出,类似在线对话效果,几个字几个字的输出
# 加载.env文件的配置
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
# 生成client,指定api_key和base_url
client = OpenAI(api_key=os.getenv('ZHIPU_API_KEY'), base_url=os.getenv('ZHIPU_BASE_URL'))
# 调用SDK进行对话,并设置api_key可用的模型
chat = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": "你好,请介绍一些你自己"},
],
stream=True # 响应流,流式响应
)
# 打印输出流,一般需要设置end="",这里为了展示效果设置的空格
for chunk in chat:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end=" ")
示例3:返回json格式
# 加载.env文件的配置
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
# 生成client,指定api_key和base_url
client = OpenAI(api_key=os.getenv('ZHIPU_API_KEY'), base_url=os.getenv('ZHIPU_BASE_URL'))
# 调用SDK进行对话,并设置api_key可用的模型
chat = client.chat.completions.create(
model="glm-4",
response_format={"type": "json_object"},
messages=[
{"role": "user", "content": "你好,请介绍一些你自己"},
]
)
print(chat.choices[0].message.content)
部分参数说明
可参考智谱官方文档,各种大模型也许有差异,但大部分功能都是类似的
主要参数:
messages:对话消息输入,可以包含当前提问,以及历史消息、system设定等等
temperature:采样温度,取值0-1,值越大输出越随机,更具多样性、创造性,但可能出现胡言乱语。值越小越输出越稳定和正确。可根据业务场景调整
http调用
### 大模型API调用
POST https://open.bigmodel.cn/api/paas/v4/chat/completions
Content-Type: application/json
Authorization: 6fdc70cbe927487s8aeb3xsw26a00dfb.PFc56jq5032GnRJ1
{
"model": "glm-4",
"messages": [
{
"role": "user",
"content": "你好,请介绍一些你自己"
}
],
"temperature": 0.99
}
多轮对话demo
在命令行中实现对话效果
# 加载.env文件的配置
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
# 生成client,指定api_key和base_url
client = OpenAI(api_key=os.getenv('ZHIPU_API_KEY'), base_url=os.getenv('ZHIPU_BASE_URL'))
# 聊天函数
def chat_with_model(messages):
response = client.chat.completions.create(
model="glm-4",
messages=messages,
stream=True # 设置流式输出
)
return response
# 多轮对话函数
def multi_chat():
# 初始化对话
messages = [
{'role': 'user', 'content': '你好!'}
]
print('用户: 你好!')
print('助手: ', end='', flush=True)
response = chat_with_model(messages)
assistant_content = ''
for chunk in response:
if chunk.choices[0].delta.content is not None:
assistant_content += chunk.choices[0].delta.content
print(chunk.choices[0].delta.content, end='', flush=True)
messages.append({'role': 'assistant', 'content': assistant_content})
print()
while True:
user_input = input('用户: ')
# 判断结束
if user_input.lower() == 'quit' or user_input.lower() == 'bye':
break
# 将每一轮的对话添加到messages中
messages.append({'role': 'user', 'content': user_input})
print('助手: ', end='', flush=True)
response = chat_with_model(messages)
assistant_content = ''
for chunk in response:
if chunk.choices[0].delta.content is not None:
assistant_content += chunk.choices[0].delta.content
print(chunk.choices[0].delta.content, end='', flush=True)
messages.append({'role': 'assistant', 'content': assistant_content})
print()
# 运行对话框
if __name__ == '__main__':
multi_chat()
java调用
使用langchain4j
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.35.0</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.35.0</version>
</dependency>
几个例子
static String apiKey = StaticResourceUtil.getProperty("deepseek.api.key");
static String apiUrl = StaticResourceUtil.getProperty("deepseek.api.url");
static String modelName = "deepseek-chat";
static OpenAiChatModel model = OpenAiChatModel.builder().apiKey(apiKey).baseUrl(apiUrl).modelName(modelName).build();
public static void main(String[] args) {
chatStreamLambda();
}
private static void chat() {
String res = model.generate("你是谁");
System.out.println(res);
}
private static void chatWithContext() {
List<ChatMessage> messages = new ArrayList<>();
messages.add(new SystemMessage("你的名字是小智"));
messages.add(new UserMessage("你是谁"));
Response<AiMessage> response = model.generate(messages);
String res = response.content().text();
System.out.println(res);
}
private static void chatWithMemory() {
ChatMemory chatMemory = MessageWindowChatMemory.builder().maxMessages(10).build();
chatMemory.add(new SystemMessage("你的名字是小智"));
chatMemory.add(new UserMessage("你是谁"));
chatMemory.add(new AiMessage("我是小智"));
chatMemory.add(new UserMessage("我是小智"));
Response<AiMessage> response = model.generate(chatMemory.messages());
chatMemory.add(response.content());
String res = response.content().text();
System.out.println(res);
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)