Python+ChatGPT制作一個AI實用百寶箱
ChatGPT
最近在互聯(lián)網(wǎng)掀起了一陣熱潮,其高度智能化的功能能夠給我們現(xiàn)實生活帶來諸多的便利,可以幫助你寫文章、寫報告、寫周報、做表格、做策劃甚至還會寫代碼。只要與文字相關(guān)的工作,它幾乎都能給出一份滿意的答卷。
小編趁著有空上去玩了一下,也發(fā)現(xiàn)了其中的強(qiáng)大
那么本篇文章小編就通過streamlit
框架來搭建一個AI
百寶箱的網(wǎng)頁,其中里面集成了一系列功能包括智能聊天機(jī)器兒、智能繪畫師,大家有興趣還可以另外添加例如配音等功能,核心邏輯的話就是調(diào)用第三方的接口,然后做一層封裝和優(yōu)化。
搭建網(wǎng)站及其框架
那么這里我們需要用到這幾個庫,用pip
命令來下載
# 安裝streamlit和openai pip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit pip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit_option_menu pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openai
那么首先網(wǎng)頁的左側(cè)有一個工具欄,其中羅列了一系列的功能,我們這里簡單的囊括了幾個,包括了“簡介”、“AI聊天”、“AI繪畫”,大家感興趣的后期可以繼續(xù)往里面添加,例如“AI配音”,代碼如下
with st.sidebar: choose = option_menu("工具欄", ["簡介","AI聊天", "AI繪畫"], icons=['house', 'person lines fill', 'app-indicator'], menu_icon="list", default_index=0, styles={ "container": {"padding": "5!important", "background-color": "#fafafa"}, "icon": {"color": "orange", "font-size": "25px"}, "nav-link": {"font-size": "16px", "text-align": "left", "margin": "0px", "--hover-color": "#eee"}, "nav-link-selected": {"background-color": "#24A608"}, } )
那么在“簡介”這一欄當(dāng)中,顧名思義就是對該網(wǎng)頁簡單的介紹,我們簡單的寫一些介紹,代碼如下
if choose == "簡介": col1, col2 = st.columns([0.8, 0.2]) with col1: # To display the header text using css style st.markdown(""" <style> .font { font-size:35px ; font-family: 'Cooper Black'; color: #FF9633;} </style> """, unsafe_allow_html=True) st.markdown('<p class="font">About the Creator</p>', unsafe_allow_html=True) with col2: # To display brand log logo = Image.open("wechat_logo.jpg") st.image(logo, width=130) st.markdown('**AI百寶箱,里面集成了各種工具,歡迎使用**')
展示出來的效果如下
AI聊天機(jī)器人
那么首先我們需要在個人設(shè)置里面去獲取一個秘鑰,
然后選擇一個模型,這里我們選擇text-davinci-003
模型,相比其他而言,性能更好,然后我們調(diào)用OpenAI
里面的方法來生成回答
def ChatGPT(user_query): completion = openai.Completion.create( engine=model_engine, prompt=user_query, max_tokens=1024, n=1, temperature=0.5, ) response = completion.choices[0].text return response
然后我們調(diào)用該函數(shù)結(jié)合streamlit
當(dāng)中的輸入框,代碼如下
elif choose == "AI聊天": st.title("AI聊天機(jī)器人") # 設(shè)置密匙 model_engine = "text-davinci-003" def ChatGPT(user_query): completion = openai.Completion.create( engine=model_engine, prompt=user_query, max_tokens=1024, n=1, temperature=0.5, ) response = completion.choices[0].text return response user_query = st.text_input("在這里輸入問題,回車查詢", "Python是什么?") if user_query != ":q" or user_query != "": # 將問題提交給ChatGPT, 返回結(jié)果 response = ChatGPT(user_query) st.write(f"{response}")
AI繪畫機(jī)器人
而在“AI繪畫”的模塊中,代碼邏輯也是相類似的,這邊需要調(diào)用與繪畫相關(guān)的API
,代碼如下
def?image_generate(user_demand): ????completion?=?openai.Image.create( ????????prompt=user_demand, ????????n=2, ????????size="1024x1024" ????) ????response?=?completion.get("data") ????return?response[0].get("url")
由于返回給我們的是一個URL
,因此還需要保存到本地,然后再通過Image
模塊打開,代碼如下
image_url = image_generate(user_query) response = requests.get(image_url, stream=True) try: with open("./image/01.png", 'wb') as f: for chunk in response: f.write(chunk) f.close() print("Download done!!") except Exception as e: print(e) img1 = Image.open(r'./image/01.png') st.image(img1, width=500, caption='Image by OpenAI')
最后就可以在終端運(yùn)行下面的代碼了,
streamlit?run?example.py
我們在瀏覽器中打開頁面,例如我們點擊進(jìn)入“AI聊天”這個模塊,我們可以看到右上角處于RUNNING的狀態(tài),表示正在運(yùn)行中,等會兒之后就能看到結(jié)果
而點擊進(jìn)入“AI繪畫”這個模塊,例如想要繪制可愛的貓咪,我們也能看到如下的結(jié)果
到此這篇關(guān)于Python+ChatGPT制作一個AI實用百寶箱的文章就介紹到這了,更多相關(guān)Python ChatGPT制作AI百寶箱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編程實現(xiàn)生成特定范圍內(nèi)不重復(fù)多個隨機(jī)數(shù)的2種方法
這篇文章主要介紹了Python編程實現(xiàn)生成特定范圍內(nèi)不重復(fù)多個隨機(jī)數(shù)的2種方法,涉及Python基于random生成隨機(jī)數(shù)的常見操作技巧,需要的朋友可以參考下2017-04-04python神經(jīng)網(wǎng)絡(luò)Batch?Normalization底層原理詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Batch?Normalization底層原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python連接數(shù)據(jù)庫并批量插入包含日期記錄的操作
這篇文章主要介紹了Python連接數(shù)據(jù)庫并批量插入包含日期記錄的操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06