Python基于Google?Bard實(shí)現(xiàn)交互式聊天機(jī)器人
用Python基于Google Bard做一個(gè)交互式的聊天機(jī)器人
之前已經(jīng)通過瀏覽器試過了 Google Bard
,更多細(xì)節(jié)請(qǐng)看: Try out Google Bard, Will Google Bard beat the ChatGPT?.
現(xiàn)在我們想實(shí)現(xiàn)自動(dòng)化,所以我用Python
做一個(gè)交互式的聊天機(jī)器人。
獲取Session ID
通過瀏覽器先拿到SessionID,它是一個(gè)cookie
,名為 __Secure-1PSID
,然后復(fù)制一下對(duì)應(yīng)的值:
Python代碼
先做一些初始化,主要是一些請(qǐng)求頭和請(qǐng)求參數(shù):
def __init__(self, session_id): headers = { "Host": "bard.google.com", "X-Same-Domain": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36", "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "Origin": "https://bard.google.com", "Referer": "https://bard.google.com/", } self._reqid = int("".join(random.choices(string.digits, k=4))) self.conversation_id = "" self.response_id = "" self.choice_id = "" self.session = requests.Session() self.session.headers = headers self.session.cookies.set("__Secure-1PSID", session_id) self.SNlM0e = self.__get_snlm0e()
發(fā)送請(qǐng)求的時(shí)候,把之前準(zhǔn)備的參數(shù)和數(shù)據(jù)發(fā)一個(gè)POST請(qǐng)求到 bard.google.com
:
resp = self.session.post( "https://bard.google.com/_/BardChatUi/data/assistant.lamda.BardFrontendService/StreamGenerate", params=params, data=data, timeout=120, )
返回了之后,需要解析消息體,獲取我們所需要的信息:
chat_data = json.loads(resp.content.splitlines()[3])[0][2] if not chat_data: return {"content": f"Google Bard encountered an error: {resp.content}."} json_chat_data = json.loads(chat_data) results = { "content": json_chat_data[0][0], "conversation_id": json_chat_data[1][0], "response_id": json_chat_data[1][1], "factualityQueries": json_chat_data[3], "textQuery": json_chat_data[2][0] if json_chat_data[2] is not None else "", "choices": [{"id": i[0], "content": i[1]} for i in json_chat_data[4]], }
運(yùn)行與嘗試
python Bard.py --session 'UgiXYPjpaIYuE9K_3BSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
它一個(gè)交互式的終端,我隨便問了幾個(gè)問題:
ChatGPT - A command-line interface to Google's Bard (https://bard.google.com/) You: What is terrible-two? Google Bard: Terrible-two is a term used to describe the behavior of a child around the age of 2. It is a normal developmental phase that all children go through. During this time, children are learning to assert their independence and explore the world around them. This can lead to tantrums, defiance, and other challenging behavior. There are a few things that parents can do to help manage the terrible twos: ? Be patient and understanding. Remember that this is a normal phase and that your child is not trying to be difficult. ? Set clear boundaries and expectations. Children need to know what is expected of them. ? Be consistent with your discipline. If you are not consistent, your child will not learn what is right and wrong. ? Offer positive reinforcement. Praise your child for good behavior and help them feel good about themselves. ? Talk to your child's doctor if you are concerned about their behavior. Your doctor can offer advice and support. The terrible twos can be a challenging time for parents, but it is important to remember that this is a normal phase and that your child will eventually grow out of it. You: how far is the moon? Google Bard: The Moon is an average of 238,855 miles (384,400 km) away from Earth. This distance varies slightly because the Moon's orbit is not a perfect circle. The Moon is closest to Earth at perigee, which is when it is about 225,623 miles (363,104 km) away. It is farthest from Earth at apogee, which is when it is about 252,088 miles (405,696 km) away. You: how far is the sun? Google Bard: The Sun is about 93 million miles (150 million kilometers) away from Earth. That's about 1 Astronomical Unit (AU). The Sun is the center of our solar system. All of the planets and other objects in our solar system orbit around the Sun. The Sun is a very large star. It is about 109 times the diameter of Earth and about 330,000 times more massive than Earth. The Sun is made up of mostly hydrogen and helium. It is so hot that the hydrogen and helium are constantly fusing together to create heavier elements. This process is called nuclear fusion. Nuclear fusion releases a lot of energy, which is what powers the Sun. You: how to cure a flu? Google Bard: There is no cure for the flu, but there are treatments that can help relieve symptoms and prevent complications. The most effective way to prevent the flu is to get a flu vaccine every year. If you get the flu, there are a few things you can do to feel better: ? Rest. Get plenty of sleep and avoid strenuous activity. ? Drink plenty of fluids. Water, juice, and soup are all good choices. ? Take over-the-counter pain relievers like acetaminophen or ibuprofen. ? Use a humidifier. The moisture can help soothe your throat and make it easier to breathe. ? See a doctor if you have severe symptoms or are at high risk of complications. Here are some tips to help you prevent the flu: ? Get a flu vaccine every year. The flu vaccine is the best way to prevent the flu. ? Wash your hands often with soap and water. This helps to prevent the spread of germs. ? Avoid close contact with people who are sick. If you must be around someone who is sick, wear a mask. ? Clean and disinfect surfaces that may be contaminated with germs. ? Stay home from work or school if you are sick. This will help to prevent the spread of the flu. ? Eat a healthy diet and exercise regularly. A healthy immune system is better able to fight off infection. You: Exiting...
代碼
相關(guān)代碼請(qǐng)查看: GitHUb LarryDpk/pkslow-samples
References:Bard
以上就是Python基于Google Bard實(shí)現(xiàn)交互式聊天機(jī)器人的詳細(xì)內(nèi)容,更多關(guān)于Python Google Bard聊天機(jī)器人的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python利用PyVista進(jìn)行mesh的色彩映射的實(shí)現(xiàn)
- Python Shiny庫(kù)創(chuàng)建交互式Web應(yīng)用及高級(jí)功能案例
- Python?Streamlit制作交互式可視化網(wǎng)頁(yè)應(yīng)用實(shí)例
- Gradio構(gòu)建交互式Python應(yīng)用使用示例詳解
- Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)圖像卷積運(yùn)算詳解
- python獲取網(wǎng)絡(luò)圖片方法及整理過程詳解
- 使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程
- Python Pyvis庫(kù)創(chuàng)建交互式網(wǎng)絡(luò)圖實(shí)例探究
相關(guān)文章
python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09python實(shí)現(xiàn)圖片加文字水印OPenCV和PIL庫(kù)
本文來為大家介紹一下,使用python中的庫(kù)實(shí)現(xiàn)給圖片添加文字水印,openCV可以給圖片添加水印,如果要添加漢字水印那就要使用PIL庫(kù)2021-09-09python opencv將多個(gè)圖放在一個(gè)窗口的實(shí)例詳解
這篇文章主要介紹了python opencv將多個(gè)圖放在一個(gè)窗口,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02Python實(shí)現(xiàn)數(shù)據(jù)集劃分(訓(xùn)練集和測(cè)試集)
這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)數(shù)據(jù)集劃分的,分為訓(xùn)練集和測(cè)試集,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以了解一下2023-05-05利用Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python中subprocess實(shí)例用法及知識(shí)點(diǎn)詳解
在本篇文章里小編給大家分享的是關(guān)于python中subprocess實(shí)例用法及知識(shí)點(diǎn)詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-10-10基于Python實(shí)現(xiàn)自制CV剪貼板功能
云桌面的win10不能調(diào)出剪貼板,對(duì)于CV工程師來說十分不方便,所以這篇文章主要介紹了如何使用Python實(shí)現(xiàn)一個(gè)CV剪貼板,提升常用語句的復(fù)制粘貼效率,感興趣的可以了解下2024-02-02Python隨機(jī)驗(yàn)證碼生成和join?字符串的問題解析
Python中有join()和os.path.join()兩個(gè)函數(shù),join是將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串而os.path.join():?將多個(gè)路徑組合后返回,本文給大家介紹的非常詳細(xì),需要的朋友一起看看吧2022-04-04