白嫖百度的千帆大模型,到底有多爽!

509 阅读4分钟

白嫖百度的千帆大模型,到底有多爽!

哈喽,大家好,我是老表,学 Python 编程,找老表就对了。

老表写教程,就是要写的小白也能懂!

时隔五个月,我又回来啦!继续开启日更,这次还建立了老表监督者协会,开干。

image.png

目前可以免费使用百度千帆大模型有:

注意 Prompt模板、Fuyu-8B 并非 AI 对话模型。

注册一个账号

手机号或者其他方式注册登录即可。

网址:console.bce.baidu.com/qianfan/

创建一个应用

网址:console.bce.baidu.com/qianfan/ais…

进入页面后点击创建应用,给一个应用名称和简介即可,模型默认都勾上了,直接点击确认即可。

创建好应用我们就可以获取到 API KeySecret Key后面有大用

2行代码白嫖

百度很贴心,已经给我们封装好了 Python SDK,我们只需运行pip 安装即可:

pip install qianfan

先问个问题试试看:

import os
import qianfan

# 将应用API_Key、应用Secret key值替换为你自己应用的对应值
os.environ["QIANFAN_AK"] = "你的应用API_Key"
os.environ["QIANFAN_SK"] = "你的应用Secret key"
qianfan.ChatCompletion(model="ernie-lite-8k").do(messages=[{"role": "user", "content": "Python学习有哪些必须掌握知识,列举最重要的5个"},], top_p=0.8, temperature=0.9, penalty_score=1.0)

运行发现回复内容很多,问题回答是在字典的result字段中,单独打印:

整复杂点

设置单轮对话和多轮对话~

设计思路

  1. 主菜单

    • 程序启动时打印主菜单,提示用户选择服务:
      1. 单轮对话
      2. 多轮对话
      3. 关闭程序
  2. 单轮对话

    • 用户输入问题
    • 调用 chat_qf 函数传递问题,获取回复并打印
  3. 多轮对话

    • 用户首先设置角色,保存为系统消息
    • 进入循环对话:
      • 用户输入问题
      • 输入 exit 退出对话,返回主菜单
      • 输入 restart 重置对话,重新设置角色
      • 将用户问题添加到对话上下文
      • 调用 chat_qf 函数传递上下文,获取回复并打印
      • 将助手回复添加到对话上下文
  4. API 调用

    • chat_qf 函数根据上下文类型(字符串或列表)构造消息
    • 使用 qianfan.ChatCompletion 获取回复
  5. 程序控制

    • 主菜单循环等待用户选择服务
    • 根据用户选择调用相应功能
    • 输入 3 关闭程序

功能说明

  1. 主菜单:程序启动时打印主菜单,用户可以选择单轮对话、多轮对话或关闭程序。
  2. 单轮对话:用户输入问题,直接调用 chat_qf 函数获取回复并打印。
  3. 多轮对话:用户首先设置角色,然后循环输入问题,调用 chat_qf 获取回复并打印。用户可以输入 exit 退出对话,或输入 restart 重置对话。
  4. API 调用chat_qf 函数根据 context 的类型(字符串或列表)构造消息,并调用 qianfan.ChatCompletion 获取回复。

代码

# 代码有点多,晚点我整理好发朋友圈
# 可以扫文末二维码加我微信 pythonbrief 领取
    
import os
import qianfan

# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
os.environ["QIANFAN_AK"] = "qxxxxx5"
os.environ["QIANFAN_SK"] = "Dxxxxg"

def chat_qf(model, context):
    messages = [
        # 貌似没法提前设置 system 角色,这里通过提前 user 预置解决
        {"role": "user", "content": "记住你的身份,你是一个非常有用的助手,擅长给用户解决分析各类问题,你叫:小白"},
        {"role": "assistant", "content": "我理解了"},
        {"role": "user", "content": context},
    ]
    if isinstance(context, list):
        messages = context
    chat_comp = qianfan.ChatCompletion(model=model)
    resp = chat_comp.do(messages=messages, top_p=0.8, temperature=0.9, penalty_score=1.0)
    return resp["result"]

def print_menu():
    print("Python专属助手为您服务,输入以下数字获得服务:")
    print("1、单轮对话")
    print("2、多轮对话")
    print("3、关闭程序")

def single_round_dialogue():
    # 代码有点多,晚点我整理好发朋友圈
    # 可以扫文末二维码加我微信领取

def main():
    while True:
        print_menu()
        choice = input("请输入选择:")
        if choice == "1":
            single_round_dialogue()
        elif choice == "2":
            multi_round_dialogue()
        elif choice == "3":
            print("程序已关闭。")
            break
        else:
            print("无效选择,请重新输入。")

if __name__ == "__main__":
    main()

运行效果

单轮对话:

多轮对话:

厉害了,解决了前段时间出现大模型世界的难题“9.11和9.8谁大”。

正常 9.11 - 9.8 = -0.69,计算机里计算留有余地,忽略即可。

趣闻

你以为它的很厉害吗,哈哈哈哈,再一问又傻了。

在我的耐心教导下,它终于认识到问题了,我不忍心再问一遍他 9.8和9.11谁大,我怕它又忘记了。。。

不白嫖,完整代码,点赞后私聊我获取吧~