30 分钟上手!极简 LLM 聊天机器人实现指南(附代码)

绝不夸张,无论是多新的新手,只要把百度的账号和API token申请好了,保证你在30分钟内开始拥有你自己的智能聊天机器人。超过30分钟,你找我。

本文主要分两部分:

  • 申请大模型的API Token
  • 一个最简单的文心一言聊天机器人实现

注:由于当时市面上的大模型都没有开放免费的API,而百度有,所以就选了百度的拿来做学习。申请百度的API Token

注册百度账号

注册地址: https://ai.baidu.com/

申请API权限

登录控制台: 完成实名身份认证

找到“千帆大模型服务与开发平台ModelBuilder”

创建千帆ModelBuilder应用

申请地址:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/v1

步骤一. 创建千帆应用

(1)登录百度智能云千帆控制台。

请您注册并登录百度智能云千帆控制台 :

https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/v1

(2)创建千帆应用

进入控制台创建应用 

(https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/create )。如果已有应用,此步骤可跳过。

(3)创建应用后,获取AppID、API Key、Secret Key。

API文档

ERNIE-3.5-128K-Preview: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fm3e8i4zy搞定。一个最简单的文心一言聊天机器人实现

申请好了API后,我们就可以直接利用百度提供的文心一言的API或者SDK来实现一个聊天机器人了。

就像某名言说的那样,talk is cheap, show me the code.

直接上代码

import os
import requests
import json
import qianfan

#这里的API_KEY,SECRET_KEY替换成你自己申请的
API_KEY = "ZCcK674j19GL5*************"
SECRET_KEY = "lPuu14wS4fiqMYUw4s**********"

def chat_api(your_name: str, query:str):
    # os.environ["QIANFAN_ACCESS_KEY"] = API_KEY
    # os.environ["QIANFAN_SECRET_KEY"] = SECRET_KEY

    os.environ["QIANFAN_AK"] = API_KEY
    os.environ["QIANFAN_SK"] = SECRET_KEY

    llm = qianfan.ChatCompletion()

    messages = []

    # user message
    messages.append({'role': 'user', 'content': your_name + "说:" + query})

    chunk_size = 50
    json_payload = {
        "messages" : messages,
        "temperature": 0.7,
        "max_output_tokens": chunk_size
    }

    response = llm.do(endpoint="eb-instant", messages=messages, stream=True)

    llm_result_text = ""
    for r in response:
        print(r["body"]["result"])
        llm_result_text = llm_result_text + r["body"]["result"]

    print(f"response={llm_result_text}")

def chat_http(your_name: str, query:str):
    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=" + get_access_token()

    messages = []

    # user message
    messages.append({'role': 'user', 'content': your_name + "说:" + query})
    chunk_size = 50
    json_payload = {
        "messages" : messages,
        "temperature": 0.7,
        "max_output_tokens": chunk_size
    }

    payload = json.dumps(json_payload)
    headers = { 'Content-Type': 'application/json' }

    print(f"payload={payload}")

    # r = requests.request("POST", url, headers=headers, data=payload, stream=True)
    r = requests.get(url, headers=headers, data=payload, stream=True)

    # Check if the request was successful
    if r.status_code == 200:
        for chunk in r.iter_content(chunk_size=128):
            print(f"chunk={chunk}")

    print("adfasdf")

def get_access_token():
    """
    使用 AK,SK 生成鉴权签名(Access Token)
    :return: access_token,或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    return str(requests.post(url, params=params).json().get("access_token"))

if __name__ == '__main__':
    # chat_http("catherine", "今天吃啥")
    chat_api("catherine", "今天吃啥")

将上述代码,保存到你的代码仓库,并取名为: ernie_test.py

测试运行机器人

1. 切换到你自己的conda虚拟环境

在前面,你创建了一个自己这个学习项目用的conda虚拟环境:https://kb.oddmeta.net/docs/omassistant/omassistant-1g4tdttdcpbv7

该环境名为cathy:

conda activate cathy

2. 命令行切换到代码目录下,然后执行

python ernie_test.py

当然,如果你用Visual Studio Code/Pycharm之类的IDE工具来写的代码,其实也完全可以直接在IDE工具里执行。

3. 报错处理

在这个示例代码里,你import了一些第3方的组件,

import requests
import json
import qianfan

有可能你这个虚拟环境里没有安装过,如果这样的话,运行时将会有一些报错,比如:

(cathy) G:\oddmeta\learning-ai\llm>python ernie_test.py
Traceback (most recent call last): 
File "G:\oddmeta\learning-ai\llm\ernie_test.py", line 2, in <module>    import requests
ModuleNotFoundError: No module named 'requests'

和/或

(cathy) G:\oddmeta\learning-ai\llm>python ernie_test.py
Traceback (most recent call last):  File "G:\oddmeta\learning-ai\llm\ernie_test.py", line 4, in <module>    
import qianfan
ModuleNotFoundError: No module named 'qianfan'

出现类似的报错,解决办法很简单,既然没有,那咱安装一下不就有了?

pip install requests
pip install qianfan

所有缺的模块都可以在一个pip install后面带齐。

OK。完结。

试过的朋友,出来现身说个法。你花了几分钟?

Leave a comment

Your email address will not be published. Required fields are marked *