【大模型应用开发-实战】(五)手把手入门智普清言官方API调用-使用openai、zhipu sdk和requests调用(二)

目录

一、前置准备

二、多种方式实现

1、使用curl方式

2、使用openAI依赖库方式

3、使用zhipuai 依赖库方式

三、完整代码

1、整体依赖

2、.env文件

3、核心代码

四、测试运行

1、使用openAI依赖库方式

2、使用zhipuai依赖库方式


一、前置准备

参考:

【大模型应用开发-实战】(四)手把手入门智普清言官方API调用-准备工作(一)-优快云博客

二、多种方式实现

1、使用curl方式

代码实现

curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \
--header 'Authorization: Bearer <你的apikey>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "glm-4",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'

2、使用openAI依赖库方式

1)安装依赖

pip install openai==1.93.0

2)新建.env文件

ZHIPUAI_API_KEY = "zhipuai_api_key"
LANGCHAIN_API_KEY = "zhipuai_api_key"

3)核心调用实现

# -*- coding: utf-8 -*-
import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv("ZHIPUAI_API_KEY")



def method2():
    """
    使用openAI依赖库
    :return:
    """
    #
    client = OpenAI(
        api_key=api_key,
        base_url="https://open.bigmodel.cn/api/paas/v4/"
    )

    completion = client.chat.completions.create(
        model="glm-4",
        messages=[
            {"role": "system", "content": "你是一个聪明且富有创造力的小说作家"},
            {"role": "user",
             "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"}
        ],
        top_p=0.7,
        temperature=0.9
    )

    print(completion.choices[0].message)


if __name__ == '__main__':
    method2()

3、使用zhipuai 依赖库方式

1)安装依赖

pip install zhipuai==2.1.5.20250626

2)新建.env文件

ZHIPUAI_API_KEY = "zhipuai_api_key"
LANGCHAIN_API_KEY = "zhipuai_api_key"

3)核心调用实现

# -*- coding: utf-8 -*-
import os
from zhipuai import ZhipuAI
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv("ZHIPUAI_API_KEY")


def method3():
    """
    使用zhipuai 依赖库
    :return:
    """
    client = ZhipuAI(api_key=api_key)  # 填写您自己的APIKey

    # 方法1,同步调用
    response1 = client.chat.completions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {"role": "user", "content": "作为一名营销专家,请为我的产品创作一个吸引人的slogan"},
            {"role": "assistant", "content": "当然,为了创作一个吸引人的slogan,请告诉我一些关于您产品的信息"},
            {"role": "user", "content": "智谱AI开放平台"},
            {"role": "assistant", "content": "智启未来,谱绘无限一智谱AI,让创新触手可及!"},
            {"role": "user", "content": "创造一个更精准、吸引人的slogan"}
        ],
    )
    print(response1.choices[0].message)

    # 方法2,异步调用
    response2 = client.chat.asyncCompletions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {
                "role": "user",
                "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"
            }
        ],
    )
    print(response2)
    # exit()

    # 方法3,流式调用
    response3 = client.chat.completions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {"role": "system", "content": "你是一个乐于解答各种问题的助手,你的任务是为用户提供专业、准确、有见地的建议。"},
            {"role": "user",
             "content": "我对太阳系的行星非常感兴趣,特别是土星。请提供关于土星的基本信息,包括其大小、组成、环系统和任何独特的天文现象。"},
        ],
        stream=True,
    )
    for chunk in response3:
        print(chunk.choices[0].delta)



if __name__ == '__main__':
    method3()

三、完整代码

1、整体依赖

requirements.txt
openai==1.93.0
zhipuai==2.1.5.20250626
langchain==0.3.26
langchain-community==0.3.26
langchain_openai==0.3.27
langchainhub==0.1.21
httpx_sse==0.4.1
requests==2.32.4
python-dotenv==1.1.1

安装依赖

pip install -r requirements.txt

2、.env文件

ZHIPUAI_API_KEY = "zhipuai_api_key"
LANGCHAIN_API_KEY = "zhipuai_api_key"

3、核心代码

chatglm_langchain_call.py
# -*- coding: utf-8 -*-
import os
from openai import OpenAI
from zhipuai import ZhipuAI
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv("ZHIPUAI_API_KEY")


def method1():
    """
    使用curl方式

    curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \
--header 'Authorization: Bearer <你的apikey>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "glm-4",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'
    :return:
    """


def method2():
    """
    使用openAI依赖库
    :return:
    """
    #
    client = OpenAI(
        api_key=api_key,
        base_url="https://open.bigmodel.cn/api/paas/v4/"
    )

    completion = client.chat.completions.create(
        model="glm-4",
        messages=[
            {"role": "system", "content": "你是一个聪明且富有创造力的小说作家"},
            {"role": "user",
             "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"}
        ],
        top_p=0.7,
        temperature=0.9
    )

    print(completion.choices[0].message)


def method3():
    """
    使用zhipuai 依赖库
    :return:
    """
    client = ZhipuAI(api_key=api_key)  # 填写您自己的APIKey

    # 方法1,同步调用
    response1 = client.chat.completions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {"role": "user", "content": "作为一名营销专家,请为我的产品创作一个吸引人的slogan"},
            {"role": "assistant", "content": "当然,为了创作一个吸引人的slogan,请告诉我一些关于您产品的信息"},
            {"role": "user", "content": "智谱AI开放平台"},
            {"role": "assistant", "content": "智启未来,谱绘无限一智谱AI,让创新触手可及!"},
            {"role": "user", "content": "创造一个更精准、吸引人的slogan"}
        ],
    )
    print(response1.choices[0].message)

    # 方法2,异步调用
    response2 = client.chat.asyncCompletions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {
                "role": "user",
                "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"
            }
        ],
    )
    print(response2)
    # exit()

    # 方法3,流式调用
    response3 = client.chat.completions.create(
        model="glm-4-0520",  # 填写需要调用的模型编码
        messages=[
            {"role": "system", "content": "你是一个乐于解答各种问题的助手,你的任务是为用户提供专业、准确、有见地的建议。"},
            {"role": "user",
             "content": "我对太阳系的行星非常感兴趣,特别是土星。请提供关于土星的基本信息,包括其大小、组成、环系统和任何独特的天文现象。"},
        ],
        stream=True,
    )
    for chunk in response3:
        print(chunk.choices[0].delta)



if __name__ == '__main__':
    # method1()
    method2()
    # method3()

四、测试运行

1、使用openAI依赖库方式

2、使用zhipuai依赖库方式

1)方法1 同步调用

2)方法3流式调用

### 如何调用智普清 API #### 调用概述 智普清 API 提供了一种通过 HTTP 请求的方式与模型交互的方法。开发者可以通过发送 POST 请求来实现对话功能,请求体中需包含 `api_key` 其他必要参数[^1]。 #### 参数说明 以下是调用过程中可能涉及的关键参数及其作用: - **api_key**: 用户的身份验证密钥,用于确认访问权限。 - **timestamp**: 时间戳,通常表示当前时间的毫秒数,防止重放攻击。 - **exp**: 过期时间,定义该请求的有效期限(单位为毫秒),超过此时间则请求失效[^4]。 #### Python 实现示例 以下是一个基于 Python 的简单调用示例: ```python import requests import json from datetime import datetime if __name__ == "__main__": url = "https://open.bigmodel.cn/api/v1/chat" api_key = "your_api_key_here" # 替换为实际的API Key headers = { 'Content-Type': 'application/json' } timestamp = int(datetime.now().timestamp() * 1000) # 当前时间的时间戳 exp = timestamp + (5 * 60 * 1000) # 设置过期时间为5分钟后 data = { "api_key": api_key, "timestamp": timestamp, "exp": exp, "query": "你好,介绍一下你自己吧", "persona": "你是Python编程工作者。", } response = requests.post(url, headers=headers, data=json.dumps(data)) result = response.json() print(result["answer"]) ``` 上述代码展示了如何构建并发送一个标准的 POST 请求到智普清 API 接口,并获取返回的结果[^2]。 #### Java 实现示例 对于使用 Java 开发的应用程序,可以参考如下代码片段完成 API 调用操作: ```java import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; public class ZhiPuAPICaller { public static void main(String[] args) throws Exception { String apiUrl = "https://open.bigmodel.cn/api/v1/chat"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); long timestamp = System.currentTimeMillis(); // 获取当前时间戳 long expirationTime = timestamp + (5L * 60L * 1000L); // 设定有效时长 String apiKey = "your_api_key"; // 替换为您的真实API Key String inputJson = "{ \"api_key\": \"" + apiKey + "\",\"timestamp\":" + timestamp + ",\"exp\":" + expirationTime + ",\"query\":\"你好\",\"persona\":\"你是Java开发工程师.\"}"; try(OutputStream os = conn.getOutputStream()) { byte[] input = inputJson.getBytes("utf-8"); os.write(input, 0, input.length); } int code = conn.getResponseCode(); if(code == 200){ System.out.println("成功接收服务器响应!"); }else{ System.err.println("错误:" + code); } } } ``` 以上代码实现了向智普清 API 发送数据包的功能,并处理了基本的成功与否判断逻辑[^3]。 #### 注意事项 在正式环境中部署之前,请务必确保已妥善保管好自己的 `api_key` 并遵循官方的安全建议以保护账户安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值