Python如何对接文心一言

 更新时间:2024年01月10日 11:46:05   作者:bystart 青檬小栈  
这篇文章主要为大家介绍了Python如何对接文心一言的操作实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

文心一言是百度研发的Ai机器,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。

申请Api Key

前往百度智能云

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

登录并创建应用,拿到需要的API KeySecret Key:

编辑源代码

修改参数:

api_key:替换成自己的

secret_key:替换自己的

redis的配置是用于保存access_token,该token通过接口获取默认有效期为30天。可自行决定是否需要redis的配合。

import requests
import json
import redis
# 文心一言配置
api_key = "你的api_key"
secret_key = "你的secret_key"
# redis配置
redis_host = "127.0.0.1"
redis_port = 6379
redis_db = 0
class ChatBot:
    def __init__(self, api_key, secret_key):
        self.api_key = api_key
        self.secret_key = secret_key
        self.message_history = []
        self.redis_client = redis.Redis(host=redis_host, port=redis_port, db=redis_db)
        self.chat_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={}"
    def get_token(self):
        if self.redis_client.exists('access_token'):
            return self.redis_client.get('access_token').decode()
        else:
            get_access_token_url = ("https://aip.baidubce.com/oauth/2.0/token?"
                                    "client_id={}"
                                    "&client_secret={}"
                                    "&grant_type=client_credentials").format(
                self.api_key, self.secret_key)
            response = requests.get(get_access_token_url)
            self.redis_client.setex('access_token', response.json()['expires_in'], response.json()['access_token'])
            return response.json()['access_token']
    def check_tokens(self, total_tokens):
        if total_tokens > 4800:
            self.message_history = self.message_history[len(self.message_history) / 2:]
    def add_chat_history(self, message):
        self.message_history.append(message)
        payload = json.dumps({
            "messages": self.message_history
        })
        return payload
    def send_message(self, message):
        payload = self.add_chat_history({
            "role": "user",
            "content": message
        })
        headers = {'Content-Type': 'application/json'}
        response = requests.post(self.chat_url.format(self.get_token()), headers=headers, data=payload)
        self.add_chat_history({
            "role": "assistant",
            "content": response.json()['result']
        })
        return response.json()['result']
if __name__ == '__main__':
    chatbot = ChatBot(api_key, secret_key)
    while True:
        message = input("you: ")
        if message.strip() != "":
            reply = chatbot.send_message(message)
            print("bot: ", reply)

思维扩展

通过上面的代码逻辑,我们是否可以尝试:通过麦克风获取用户的语音指令转成文字,然后通过文心一言拿到返回的内容再生成语音进行播放。是不是就成了智能语音助手🤔

以上就是Python如何对接文心一言的详细内容,更多关于Python对接文心一言的资料请关注脚本之家其它相关文章!

相关文章

  • selenium XPath定位的实现示例

    selenium XPath定位的实现示例

    XPath是一种在XML文档中定位和选择节点的语言,通过路径表达式遍历XML树,支持节点选取、字符串匹配、数值计算、逻辑运算等功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • python 获取当前目录下的文件目录和文件名实例代码详解

    python 获取当前目录下的文件目录和文件名实例代码详解

    这篇文章主要介绍了python 获取当前目录下的文件目录和文件名实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python实现nao机器人手臂动作控制

    python实现nao机器人手臂动作控制

    这篇文章主要为大家详细介绍了python实现nao机器人手臂动作控制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 详解 python logging日志模块

    详解 python logging日志模块

    这篇文章主要介绍了详解 python logging日志模块,记录日志最简单的方法就是在你想要记录的地方加上一句 print , 我相信无论是新手还是老鸟都经常这么干。在简单的代码中或者小型项目中这么干一点问题都没有,需要的朋友可以参考下
    2022-01-01
  • Python Scrapy爬虫框架使用示例浅析

    Python Scrapy爬虫框架使用示例浅析

    Scrapy爬虫框架可以实现多线程爬取目标内容,简化代码逻辑,提高开发效率,这篇文章主要介绍了Python Scrapy爬虫框架的使用示例,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Python实现简单线性插值去马赛克算法代码示例

    Python实现简单线性插值去马赛克算法代码示例

    去马赛克是图像处理中的一项技术,用于从单色彩滤光片阵列(CFA)图像恢复全彩图像,本文介绍了一种基于简单线性插值的去马赛克算法,并展示了如何将MATLAB代码转换为Python代码,需要的朋友可以参考下
    2024-10-10
  • 使用python脚本自动创建pip.ini配置文件代码实例

    使用python脚本自动创建pip.ini配置文件代码实例

    这篇文章主要介绍了使用python脚本自动创建pip.ini配置文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 详解Python 序列化Serialize 和 反序列化Deserialize

    详解Python 序列化Serialize 和 反序列化Deserialize

    这篇文章主要介绍了详解Python 序列化Serialize 和 反序列化Deserialize的相关资料,序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据,需要的朋友可以参考下
    2017-08-08
  • python使用selenium登录QQ邮箱(附带滑动解锁)

    python使用selenium登录QQ邮箱(附带滑动解锁)

    这篇文章主要为大家详细介绍了python使用selenium登录QQ邮箱,带滑动解锁登录功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python进阶篇之正则表达式常用语法总结

    Python进阶篇之正则表达式常用语法总结

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。本文为大家总结了一些正则表达式常用语法,希望有所帮助
    2022-08-08

最新评论