[年終回顧] 2023 年的回顧與展望

2023 年度回顧 懶人包 今年最令人懷念的就是: 八月的時候,來了一趟去英國跟法國的旅遊。 因為去年 LLM 大爆發,今年有幸可以參加一堆好玩的專案與內部訓練。 (共有 28 個 new Repositories) 到了這個年紀,可以從事自己喜愛的工作,家人開心在一起,還有健康身體,真的很重要。 數據總結 總共讀完: 2418 分鐘, 14 本書 (有 1 本其他平台) 2022: 24 本書。 部落格文章撰寫上: 2023: 59 篇文章 2022: 53 篇文章 健身運動: 2023: 3595 mins 2022: 3966 mins Github Contribution 上面: 2023: 1062 2022: 828 因為 LLM 今年有許多專案: (共有 28 個 new Repositories) linebot-langchain linebot-embedchain linebot-langchain-travel langchain-jira-agent chat-with-onlinepdf 有點多,建議大家去 repo 看。 聚會方面, 2023 比較解禁今年也比較有機會看到更多老朋友: 4 月可以跟東吳大學同學們聚餐。 12 月跟 Corel 的老朋友見面。 雜項數字
繼續閱讀

[Golang] 使用 Golang 透過 Google Gemini Pro 來打造一個具有LLM 功能 LINE Bot (一): Chat Completion and Image Vision

前提 上一次開始使用 tmc/langchaingo 打造一些基礎的 Golang 應用後,就在 12 月 13 號 Google 正式公開了 Gemini Pro 的相關 API 。本篇文章開始以下的事項: Google Gemini Pro 有哪些資源可以學習? 如何整合到 LINE Bot? 打造一個回覆,圖片辨識的 Gemini Pro LINE Bot 系列文章: 使用 Golang 透過 Google Gemini Pro 來打造一個具有LLM 功能 LINE Bot (一): Chat Completion and Image Vision(本篇) 使用 Golang 透過 Google Gemini Pro 來打造一個具有LLM 功能 LINE Bot (二): 使用 Chat Session 與 LINEBot 快速整合出有記憶的 LINE Bot 使用 Golang 透過 Google Gemini Pro 來打造一個具有LLM 功能 LINE Bot (三): 使用 Gemini-Pro-Vision 來打造名片管理的聊天機器人 Google Gemini Pro 有哪些資源可以學習 雖然才正式公佈不久,但是網路上其實有不少資源可以學習。我這邊列出一些資源: (直接問 Gemini Pro 出來的) 這裡也有一些我覺得蠻重要的資訊: Vetex-ai (Google) 的 function calling ? https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/function-calling#function-calling-sdk-samples Colab: https://colab.research.google.com/github/GoogleCloudPlatform/generative-ai/blob/main/gemini/function-calling/intro_function_calling.ipynb Golang 加上 Gemini pro 這邊有大大 Eli Bendersky 寫的 sample code https://eli.thegreenplace.net/2023/using-gemini-models-from-go/ 如何取得 Google Gemini Pro - API Keys 到 Google AI Studio : https://makersuite.google.com/app/apikey 目前價位如下,還有一些免費額度可以用: 如何整合 LINE Bot? 程式碼: https://github.com/kkdai/linebot-gemini-pro 這邊主要先整入兩個主要功能 : ChatSession 跟 Image ,相關程式碼都在 gemini.go Chat Completion // Gemini Chat Complete: Iput a prompt and get the response string. func...
繼續閱讀

[Golang] 透過 Ollama 快速架設免費本地端的 ChatGPT,並且寫一個 LangChainGo 的應用

前提 好久沒來寫 Golang 來寫文章了,就想說把之前看過關於 Golang LangChain 相關的文章來敘述一下。以下這篇文章主要參考了 Eli Bendersky 部落格的文章 - [Using Ollama with LangChainGo](https://eli.thegreenplace.net/2023/using-ollama-with-langchaingo/) 這裡也會詳細一點來介紹以下幾個部分: 什麼是 Ollama 能拿來做些什麼? 要如何使用 Ollama ? 如何透過 Golang 連接 Ollama 並且串接 LangChain 接下來就開始吧! 什麼是 Ollama Ollama 是一個相當方便的工具,以往需要在本地端使用 llama 的話需要有以下的步驟: 到 Meta AI 申請下載 link 透過 LLAMA.cpp 把 LLAMA2 的 model 去轉換過後,讓你在 Mac OSX 上面可以執行並且讀取。 (當然還有做 Quantization, Optimization ) 然後執行 LLAMA.cpp 去跑起來 LLAMA 的 model 來跑你需要的功能。 但是使用 Ollama 卻相當的簡單 安裝 Ollama 參考 github 說明: curl https://ollama.ai/install.sh | sh 執行之後,就會下載模型 ollama run llama2 更多其他 Models : Model Parameters Size Download Neural Chat 7B 4.1GB ollama run neural-chat Starling 7B 4.1GB ollama run starling-lm Mistral 7B 4.1GB ollama run mistral Llama 2 7B 3.8GB ollama run llama2 Code Llama 7B 3.8GB ollama run codellama Llama 2 Uncensored 7B 3.8GB ollama run llama2-uncensored Llama 2 13B 13B 7.3GB ollama run llama2:13b Llama 2 70B 70B 39GB ollama run llama2:70b Orca Mini 3B 1.9GB ollama run orca-mini Vicuna 7B...
繼續閱讀

[遊戲天國] 隻狼:暗影雙死 也破關了

終於把隻狼打通關了,黑血狼剩下 「[血緣詛咒」 ,其他都在 Steam Deck 全破。 (可惡索尼獨佔)。 尾王一心比較麻煩就是第一階段,二三階段就乖乖用傘反擊慢慢耗,只識破槍的突刺。「猶豫,就會敗北」 比較難的關卡 雙義父打完,其實三年前的比在天守閣的弱一點,天守閣因為我不能卡牆,天守閣放毒倒是比較困擾。 不過慢慢防守用不死斬總算也是打完了 。 經過 「P的謊言」後,隻狼變簡單了 經過 「P的謊言」我的隻狼有變強很多。(明明才剛開始。 不過用 SD 好討厭啊~都不好錄影。為了截圖還差點忘記砍最後一刀,差點就搞笑了。討伐次數大概是五次,不過我有看攻略。 打完 P 的謊言再來打隻狼~會很好過誒 之前在 PS5 卡太久,一直沒時間打。 結果打完 P 的謊言練習很久的阻擋之後。 就很順利的過了 O_0 ? 看來之前全破魂系列都是閃躲王~~
繼續閱讀

[Kubernetes] 關於 Kubernetes

前提: 最近在聊天的時候討論到,究竟在 Kubernetes 內管控一些帳號與密碼的時候,我們都知道要使用 Kubernetes Secret 而不要使用 Environment Variables 。 但是在安全性上究竟有哪些差異,我決定查一些書上面的整理: 參考書籍內容 **Kubernetes Security** Liz Rice, Michael Hausenblas You can pass environment variables into containers at runtime. This means you can take the container image (code) and configure it according to the scenario it is running in. In Kubernetes, “ordinary” environment variables can be specified directly in the pod YAML or via a ConfigMap. But be careful: including secret values in YAML files that you check into code control means those secrets are accessible to the same people who can see the source code. To mitigate this, Kubernetes also supports the secret resource, which can be passed into a pod as an environment variable. Your pod spec or ConfigMap YAML refers to the secret resource by name rather than directly to the secret value, so that it’s safe to put that YAML under code control. Kubernetes 1.7 之後的版本,可以加上 node authorization...
繼續閱讀

[Heroku] 如何把 Local Python Docker Services 轉換到 Heroku 上面

前提: 同事喬治日報上面推薦的 https://github.com/assafelovic/gpt-researcher 真的很好用,搭配 https://app.tavily.com/home 超讚 來問問 Sam Altman 最近到底發生什麼事情,懶人包馬上出來。 不太好本地端部署,為了部署在 Heroku 稍微修改一些部署端的設定。 實作 分享一下關於部署需要注意的,跟如何如何更改部署流程在雲端的 FaaS 服務上。 TL;DR 直接按下去部署 Heroic https://github.com/kkdai/gpt-researcher 本地端部署起來 其實真的要部署起來,沒有那麼簡單。首先 local 要克服相關的 python 版本的問題。像是 Python 版本需要 3.11 以上。 PYENV 控制版本 透過 pyenv 控制 python 版本真的很方便,很多時候 LLM 大多使用 python 3.9 。但是有一些人會使用 3.10 甚至是 3.11 pyenv versions:可以列出已經安裝在本地端的所有版本。 可以透過 pyenv install 3.11.6 來安裝版本。 pyenv local 3.xx.xx: 本地端,這個 shell session 切換版本。 pyenv global 3.xx.xx: 讓系統預設版本變換。 部署到 Heroku 由於這個專案,有提供 Dockerfile 其實要本地端部署還是簡單一點。如果希望可以讓更多人使用,可以試試看放在 Heroku 上面。以下分享幾個需要修改的地方。 關於浮動 port 有使用 Cloud Platform 的人都知道,雲端上面 FaaS (Function As A Services) 無法讓你任意選擇開啟的 PORT 。通常會使用 $PORT 帶下去啟動。 關於這部分,可能要檢查一些地方: Dockerfile 套用 $PORT 原有版本在 https://github.com/assafelovic/gpt-researcher/blob/master/Dockerfile FROM python:3.11.4-slim-bullseye as install-browser RUN apt-get update \ && apt-get satisfy -y \ "chromium, chromium-driver (>= 115.0)" \ && chromium --version && chromedriver --version ...... EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] 最後一行的 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] 由於要帶入環境變數 $PORT 修改如下: CMD uvicorn main:app --host 0.0.0.0 --port $PORT 而 EXPOSE 8000 也可以改成 EXPOSE...
繼續閱讀