目录

准备apiKey

简单的SDK调用

部分参数说明

http调用

多轮对话demo

java调用


本文旨在为读者提供一篇关于AI大模型API入门实战的全面指南。文章将从基础知识入手,详细介绍AI大模型API的概念、原理和应用场景,帮助读者建立对AI大模型API的整体认识。接下来,文章将深入剖析如何利用AI大模型API进行实战操作,包括API的调用方法、参数设置、数据处理等环节。通过实际案例和代码演示,使读者能够轻松上手AI大模型API的开发与应用。最后,本文还将探讨AI大模型API的未来发展趋势,为读者在AI领域的技术进步提供参考和启示。整篇文章将理论与实践相结合,为初学者和有一定基础的读者提供一个全面、实用的AI大模型API入门实战教程。

本文尽量以最简单的demo展示其各种功能,开箱即用,详细使用以及其他功能可参照官网

目录

准备apiKey

简单的SDK调用

部分参数说明

http调用

多轮对话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)

部分参数说明

可参考智谱官方文档,各种大模型也许有差异,但大部分功能都是类似的

智谱AI开放平台https://www.bigmodel.cn/dev/api/normal-model/glm-4https://www.bigmodel.cn/dev/api/normal-model/glm-4https://www.bigmodel.cn/dev/api/normal-model/glm-4https://www.bigmodel.cn/dev/api/normal-model/glm-4icon-default.png?t=O83Ahttps://www.bigmodel.cn/dev/api/normal-model/glm-4

主要参数:

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐