為了隱藏 API 金鑰, 先將其存在隱藏檔 .env 內的 GROQ_API_KEY 變數 :
然後用 os 與 dotenv 模組將其讀出來 :
import os
from dotenv import load_dotenv
load_dotenv()
groq_api_key=os.environ.get('GROQ_API_KEY')
套件 dotenv 用法參考 :
例如 :
>>> import os
>>> from dotenv import load_dotenv
>>> load_dotenv()
True
>>> groq_api_key=os.environ.get('GROQ_API_KEY')
然後從 groq 匯入 Client 類別, 呼叫其建構式 Client() 並傳入 api_key 參數 :
>>> from groq import Client
>>> client=Client(api_key=groq_api_key)
使用 llama3-70b-8192 模型向其詢問 "愛情是甚麼" :
>>> chat_completion=client.chat.completions.create(
messages=[
{
"role": "user",
"content": "請問愛情是甚麼? 請用繁體中文(zh_Hant)回答",
}
],
model="llama3-70b-8192",
)
>>> chat_completion.choices[0].message.content
'愛情是人類最基本、最普遍、也是最複雜的情感體驗之一。它是人際之間的一種深入、熱烈、且持久的情感連結,往往是指人們之間的情感依附、承諾、信任和支持。\n\n愛情可以具體地表現為 романтик愛情、親情、友情、親切之情、同情、感恩之情等多種形式。它可以是對某人的情感依戀,也可以是對某種事物或理想的熱情和榮耀。\n\n愛情的核心特徵是強烈的情感需求和承諾。當人們在情感中時,他們往往會感到幸福、安全、信任和滿足。愛情也可以激發人的創造力、慷慨和奉獻,讓人們竭盡所能地為對方做出貢獻。\n\n然而,愛情也可能帶來傷痛、失望和分離。當愛情不被回報或失去時,人們可能會感到悲伤、痛苦和空虛。\n\n總之,愛情是人類生命中最重要、最珍貴的感情之一。它讓人們獲得溫暖、支持和幸福,也讓人們感到生命的意義和價值。'
這次不知為何會出現一個似乎是俄文的單字 "романтик", 哈哈. 查詢谷歌翻譯原來 "романтик" 是蒙古文 "浪漫的" 意思.
可以將前篇中的 ask_llm 模組改用 Clieent 類別 :
# ask_llm.py
from groq import Client
def ask_groq(prompt, api_key, model='llama3-70b-8192'):
client=Client(api_key=api_key)
chat_completion=client.chat.completions.create(
messages=[
{"role": "user",
"content": prompt,
}],
model=model,
)
return chat_completion.choices[0].message.content
事實上就只是把 Groq 換成 Client 而已.
先讀取 API Key :
>>> import os
from dotenv import load_dotenv
load_dotenv()
groq_api_key=os.environ.get('GROQ_API_KEY')
True
從 ask_llm 模組匯入 ask_grok() 函式, 呼叫時傳入提示詞與 API Key :
>>> from ask_llm import ask_groq
>>> question='請問愛情是甚麼? 請用繁體中文(zh_Hant)回答'
>>> answer=ask_groq(question, groq_api_key)
>>> answer
'愛情這個複雜難以捉摸的感覺!以下是我的嘗試回答:\n\n愛情是一種強烈的情感體驗,源於對他人或事物的深入了解、感激和熱戀。它是一種複雜多面的情感體驗,包含著情感、思想、行為和生理反應等多個方面。\n\n愛情可以是Romantic的,例如戀愛、親密關係中的愛情,但同時也可以是Platonic的,例如友情、家人之間的愛情。它還可以是自我愛,例如自尊自愛、自我接納和自我肯定。\n\n愛情的特點包括:\n\n1. 情感強烈:愛情是一種強烈的情感體驗,能夠激發我們的情感 Response。\n2. 深入了解:愛情需要我們對他人或事物有深入的了解和認識。\n3. 感激和熱戀:我們對被愛的人或事物感到感激和熱戀,願意為他們付出和犧牲。\n4. 互動和連結:愛情需要我們與他人或事物之間的互動和連結,建立起紧密的關係。\n5. 多種形式:愛情可以出現於各種形式,包括戀愛、友情、家人之間的愛情、自我愛等。\n\n愛情對我們的人生有著很大的影響。它可以帶來我們生命中的愉悦和滿足,讓我們感到被 Needed 和被愛。但同時,愛情也可以帶來痛苦和失落,讓我們感到脆弱和受傷。\n\n總之,愛情是一種複雜難以捉摸的感覺,它可以是美好的,也可以是痛苦的。但無論如何,它都是我們生命中的一部分,使我們的人生更加豐富多彩。'
這回從蒙古文 "романтик" 變成英文 "Romantic" 了.
參考 :
2024-09-17 補充 :
今天將 Groq 的文字與圖片聊天程式碼寫成一個 ask_llm.py 模組方便呼叫 :
# ask_llm.py
# Please install the following packages in advance:
# !pip install groq
import base64
from groq import Client
def ask_groq_text(prompt, api_key, model='llama3-70b-8192'):
client=Client(api_key=api_key)
chat_completion=client.chat.completions.create(
messages=[
{"role": "user",
"content": prompt,
}],
model=model,
)
return chat_completion.choices[0].message.content
def ask_groq_vision_file(prompt, file, api_key):
client=Client(api_key=api_key)
with open(file, 'rb') as image_file:
base64_image=base64.b64encode(image_file.read()).decode('utf-8')
image_url=f'data:image/jpeg;base64,{base64_image}'
content=[{'type': 'text', 'text': prompt},
{'type': 'image_url', 'image_url': {'url': image_url}}]
chat_completion=client.chat.completions.create(
messages=[{'role': 'user', 'content': content}],
model='llava-v1.5-7b-4096-preview'
)
return chat_completion.choices[0].message.content
def ask_groq_vision_url(prompt, url, api_key):
client=Client(api_key=api_key)
content=[{'type': 'text', 'text': prompt},
{'type': 'image_url', 'image_url': {'url': url}}]
chat_completion=client.chat.completions.create(
messages=[{'role': 'user', 'content': content}],
model='llava-v1.5-7b-4096-preview'
)
return chat_completion.choices[0].message.content
使用時先從 ask_llm 模組匯入所有函式 :
>>> from ask_llm import *
首先從隱藏檔 .env 讀取 GROQ_API_KEY 變數 :
>>> import os
>>> from dotenv import load_dotenv
>>> load_dotenv()
True
>>> groq_api_key=os.environ.get('GROQ_API_KEY')
設定提示詞後呼叫 ask_groq_text(prompt, api_key) 進行文字聊天 :
>>> prompt='甚麼是量子糾纏? 請以小學生能了解的程度簡述且用繁體中文 (zh_Hant) 回答'
>>> print(ask_groq(prompt, groq_api_key))
😊
量子糾纏(Quantum Entanglement)是一個非常奇怪、有趣的現象,它發生在量子世界中。
在我們日常生活中,兩個物體之間的距離越遠,牽扯的關聯就越少。例如,你和你的朋友站在兩端的街口,你做出一個動作,朋友不會馬上知道。
但是,在量子世界中,事情就不同了。當兩個粒子( tiny particles)處於量子糾纏的狀態時,無論牽扯的距離有多遠,它們之間的關聯都會保持著。
舉個簡單的例子:
想像你和你的朋友各拿了一個小球,球的顏色可能是紅色或藍色。你們站在兩端的街口,隨機翻開球,看到自己的球的顏色就是什麼顏色。
但是,如果這兩個球處於量子糾纏的狀態,你翻開球,看到自己的球是紅色的,瞬間,你朋友那端的球也一定是紅色的,無論距離有多遠 !
這是因為量子糾纏使得這兩個粒子之間的關聯非常緊密,遠遠超過我們日常生活中理解的範圍。
量子糾纏這種現象讓科學家們感到非常驚奇和困惑,但它也開啟了我們對於量子世界的理解和認識的一扇門。
Hope you understand! 😊
沒有留言 :
張貼留言