智谱API使用

智谱API使用

image

如何注册和调用api网上都有对应的内容,直接一搜就可以,本文针对代码的书写提出建议

info

个人建议使用流式获取的方法,这个是类似gpt那种自然生成的效果的。

利用python使用zhipu ai,利用js得到内容

使用前记得 pip install zhipuai

如果想获得更多代码,比如实现对话文本框的效果可以关注私我

my_client = ZhipuAI(api_key='自己的api key')
def generate_stream(ai_response):
    try:
        for chunk in ai_response:
            # Simulating a delay for each message chunk
            # 这是必写的形式,不这么写你会得到出了答案的其他的内容
            yield f"{chunk.choices[0].delta.content}"
    except GeneratorExit:
        print("Client disconnected")


@utils.route('/api/ai-assistant', methods=['GET', 'POST'])
def ai_assistant():
    if request.method == 'GET':
        return jsonify({'success': True, 'message': 'AI assistant is running'})
    else:
        data = request.get_json()
        user_message = data.get('message')
        # 使用智谱AI的API进行消息处理
        ai_response = my_client.chat.completions.create(
            model="glm-4",
            messages=[
                # sys就是你想让你系统扮演什么角色,使用字符串,此时的内容是我自己设定好的,暂时不展示,反正想字符串多长都可以
                # user表示用户输入的内容,使用这个来表示从前端获得的信息
                {"role": "system", "content": waste_types_info_en},
                {"role": "user", "content": user_message}
            ],
            stream=True,  # 必有
        )
        return Response(generate_stream(ai_response), content_type='text/event-stream')  # 必须这个格式

async function getAIResponse(content) {
    const response = await fetch('/api/ai-assistant', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({message: content}),
    });
    const reader = response.body.getReader();
    # createMessageBubble是自己写的创造文本框的方法
    let aiBubble = createMessageBubble('ai-message');
    let totalText = ''; // 用于累积读取的文本
    while (true) {
        const {done, value} = await reader.read();
        totalText += decoder.decode(value);
        # 下面这个marked.parse是把ai反馈的内容变成markdown格式,记得提前下好marked.js这个js插件。不使用这个也行,只不过样式丑了
        aiBubble.innerHTML = marked.parse(totalText);
        if (done) {
            break;
        }
    }
}

image

image

light

此时可以清楚的看到成功流式得到结果,并且使用marked.js的效果

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值