大家好,我是小林。
最近收到讀者反饋,在面試某個公司時,想要針對性地看該公司的面經(jīng)比較困難,如果有快速 get 到公司面試重點的方法就好了。
于是,我想到一個好主意,我們何不把面經(jīng)庫喂給AI,這樣就可以指定一個公司看面試題了!
試想一下,我下星期要面試騰訊,我直接問AI,幫我梳理騰訊的面試重點知識,那么就可以根據(jù)AI輸出的重點知識靶向?qū)W習(xí)一波,這下面試需要準(zhǔn)備的知識再也不用靠猜了!
這樣復(fù)習(xí)到的知識,被面試問到的概率就會很高,這樣的學(xué)習(xí)投入產(chǎn)出比不要太高了。
那說干就干!
技術(shù)選型
當(dāng)然,我們在開發(fā)一個項目的時候,肯定首先要考慮技術(shù)選型的事情,技術(shù)選型重要的是基于場景來考慮, 比如實用性、開發(fā)成本、費用成本等等。
那么,做AI工具前,我們先來調(diào)研用哪個大語言模型。
那問題來了,國內(nèi)外那么多大模型,到底哪個才是好用的呢?
于是我問了一位身處大模型行業(yè)的朋友,而他向我推薦了智譜旗下,據(jù)說性能十分強(qiáng)勁的GLM-4-Plus。
要說最近智譜也是動作頻頻啊,不但更新了基座大模型 GLM-4-Plus,還以此為契機(jī),將旗下一系列全模型家族都上線到了bigmodel.cn。
而在 SuperBench 9 月綜合榜最新的大模型評測中,國內(nèi)模型 GLM-4-Plus 在本次評測中排名全球第三(國內(nèi)第一),打破了國外模型對前三名的壟斷。
從圖中我們可以看到,國內(nèi)模型在多個方面都有明顯提升,包括對齊、智能體和數(shù)理邏輯等。
雖然和OpenAI還有一些差距,但也是遙遙領(lǐng)先其他國產(chǎn)大模型了!因為網(wǎng)絡(luò)原因,我們調(diào)用OpenAI的模型不太方便,再加上國外模型對中文的適配度普遍較差。
最終我決定選擇我們國產(chǎn)的模型GLM-4-Plus來做AI面試題知識庫!
那問題來了,GLM-4-Plus是國內(nèi)哪家的大模型的呢?
我調(diào)研了一下,發(fā)現(xiàn)是智譜團(tuán)隊全自研的大模型,智譜是由清華大學(xué)計算機(jī)系技術(shù)成果轉(zhuǎn)化而來的公司。
在這次最新的國內(nèi)外大模型的評測中,也能明顯看到GLM-4-Plus的基本素質(zhì)過硬,明顯強(qiáng)于其他國產(chǎn)模型,進(jìn)入世界第一梯隊。
除此之外,我還想看看他的價格如何。
可以,零幀起手就是免費的1億tokens,做個小應(yīng)用完全夠用了!
常見構(gòu)建智能體的操作(文生文、文生圖、文生視頻、微調(diào)、知識庫等),在智譜的文檔里也寫的相當(dāng)清楚,對我們程序員的眼睛很友好!
接著,我們再看看GLM-4-Plus,到底有多厲害?能解決我的需求嗎?
先來做個簡單測試:「9.9 和 ?9.11,誰比較大?」,別看這個問題簡單,之前有不少大模型都在這個簡單的數(shù)學(xué)問題上翻車了。
我們,來看看智譜的GLM-4-Plus模型的回答。
很聰明,GLM-4-Plus模型回答是正確的,有意思的是,在后面也小小吐槽了其他大模型在這類簡單的問題卻出現(xiàn)了錯誤。
既然針對GLM-4-Plus模型的小測試,它挑戰(zhàn)成功了,我們來繼續(xù)測試測試GLM-4-Plus模型更多的能力。
文章總結(jié)的能力
面試解答的能力
最后,我把我整理的面經(jīng)庫交給模型,手把手教大家如何寫一個可以指定公司的面試題庫機(jī)器人,面試對應(yīng)公司時,我們就能針對性地訓(xùn)練了!
GLM-4-Plus:文章總結(jié)
我在公眾號已經(jīng)分享了 100 多篇的互聯(lián)網(wǎng)后端開發(fā)的面經(jīng),累計起來也有 100 萬字了,其實這也是一個龐大的知識庫了,但是短期著急面試的同學(xué),肯定也看不完。
如果你突然收到了字節(jié)的面試,想要快速復(fù)習(xí)字節(jié)常考的知識點,我教大家一個高效的復(fù)習(xí)方法!
你可以從《互聯(lián)網(wǎng)中大后端開發(fā)的面經(jīng)》中找到我發(fā)布過的字節(jié)面經(jīng)文章,然后把文章保存到本地文件交給了智譜AI BigModel開放平臺的GLM-4-Plus模型來梳理文章的內(nèi)容。
比如,我挑選了一篇字節(jié)的面經(jīng),上傳之后,GLM-4-Plus會把重點內(nèi)容的知識進(jìn)行了分類,并且還把算法題的 leetcode 編號寫出來,也方便我們可以去 leetcode 去練習(xí)這個算法題。
接下來,你可以針對不熟悉的內(nèi)容進(jìn)一步去學(xué)習(xí)。
比如,我跟他說「我對 RPC 與 HTTP 的區(qū)別不是很懂,請你幫我解釋一下」,GLM-4-Plus模型是很認(rèn)真回答了這個問題,而且羅列的也很全面。
GLM-4-Plus:面試解答
大家出去面試的時候,最好面試完之后,要把問題整理一下,并且要針對每一個問題進(jìn)行復(fù)盤,這樣你的成長才會比較快
為了更高效的對自己的面經(jīng)進(jìn)行復(fù)盤,我們可以把面試問題直接上傳給GLM-4-Plus模型,讓他幫我們整理!
比如,我這里找了一個同學(xué)的互聯(lián)網(wǎng)中廠的Java后端面經(jīng),把內(nèi)容保存為文件。
接著,直接上傳給GLM-4-Plus模型,讓它給出回答,不到幾秒的時間,GLM-4-Plus模型就把所有問題的回答都總結(jié)出來了:
如果你想針對某一個問題,想具體詳細(xì)的進(jìn)一步學(xué)習(xí),你可以繼續(xù)追問。
比如,我讓GLM-4-Plus模型幫我梳理HashMap 梳理 jdk1.7 版本和 1.8 版本的區(qū)別,一下子就給出更詳細(xì)且清晰的回答了。
通過這種方式,就可以非常高效的復(fù)盤和整理自己的面經(jīng)了,如果想要進(jìn)一步深入某個面試題,多向GLM-4-Plus模型追問幾句就可以,簡單又高效!
GLM-4-Plus:針對公司的面試題庫
通過文章總結(jié),我們可以總結(jié)一篇面經(jīng)文章的內(nèi)容。可是,我們在準(zhǔn)備某個公司面試時,一篇文章顯然是不夠的,而單純和AI對話也不能容納太多的上下文。
那么如果我想要制作一個海納百川的題庫,然后根據(jù)指定公司得到對應(yīng)的面試題和解答呢?答案是:構(gòu)建一個面經(jīng)知識庫!
我們只需要完成以下幾步:
創(chuàng)建自己的API key
創(chuàng)建知識庫:上傳所有的面經(jīng)
訓(xùn)練面試題大模型
問答:面試哪個公司就喚起哪個公司的“面試官”
創(chuàng)建自己的API key
調(diào)用GLM-4-Plus 模型接口調(diào)用非常簡單,官方都已經(jīng)給出代碼示例了,只需要復(fù)制代碼示例,然后把代碼示例中的API密鑰改成你自己的,就完事了,極大縮減了開發(fā)的周期。
首先,創(chuàng)建一個自己的API key。而且,完全不用擔(dān)心token問題!智譜先送 1 億Tokens:
老用戶獻(xiàn)上大禮:根據(jù)用戶在9月份用量情況,贈送額度2000萬到 1億tokens的tokens資源包。
新用戶巔峰起步:每位新注冊用戶,注冊后即可獲贈 1億額度Tokens資源包。
接著,在代碼里初始化client:
private?static?final?String?API_SECRET_KEY?=?"此處替換為你的API?key";
private?static?final?ClientV4?client?=?new?ClientV4.Builder(API_SECRET_KEY)
?????????.networkConfig(60,?60,?60,?60,?TimeUnit.SECONDS)
?????????.build();
創(chuàng)建知識庫
新建一個知識庫,上傳各個公司的面經(jīng)(這里我就上傳了我整理的面經(jīng)文章)。
注意,我們可以根據(jù)文章格式,配置文檔類型為文章知識、問答類知識或自定義知識。
訓(xùn)練面試題大模型
我們設(shè)計兩個角色:AI面試官和AI面試者。
AI面試官:根據(jù)我們指定的公司,從知識庫找到問題提問。(此時你可以根據(jù)問題試試自己能不能答得出來!)
AI面試者:根據(jù)知識庫的解答,總結(jié)并潤色成“人話”。(此時你可以對比看看自己剛才回答得怎么樣)
(1)我們先設(shè)計好他們各自的Prompt:
????private?static?final?String?AI_INTERVIEWER_SYSTEM_PROMPT?=
????????????"從知識庫中找屬于{{用戶給出的公司名稱}}的后端開發(fā)面試題,用于向面試者提問,找不到就用自身知識提問并且告訴用戶該信息不是來自文檔。n"?+
????????????????????"如果用戶沒有給出公司名稱,請從知識庫中隨機(jī)找面試問題。n"?+
????????????????????"要求:(1)只需要提出問題,絕對不要回答給出的問題。(2)至少給出5個問題?(3)不要直接照搬知識庫內(nèi)容,請將找到的內(nèi)容潤色成面試問題(4)按照{(diào)序號}.{面試題}的格式輸出";
????private?static?final?String?AI_APPLICANT_SYSTEM_PROMPT?=
????????????"你是一位求職者,你要結(jié)合知識庫,清晰準(zhǔn)確地回答面試官提出的問題。n"?+
????????????????????"要求:(1)優(yōu)先搜索知識庫答案?(2)找到答案后,潤色成口語化表達(dá)?(3)使用第一人稱進(jìn)行回答,回答不超過200字。";
(2)第二步,我們包裝一個請求函數(shù),傳入上下文(之前發(fā)過的消息)、配置知識庫工具等。話不多說,直接看代碼:
????public?static?String?invoke(String?systemMessage,?String?userMessage)?{
????????//?1.?這里的作用是收集上下文,讓AI根據(jù)我們給出的上下文繼續(xù)推導(dǎo),也可以把入?yún)⒅苯痈臑長ist<ChatMessage>?context
????????List<ChatMessage>?messages?=?Arrays.asList(
????????????????new?ChatMessage(ChatMessageRole.SYSTEM.value(),?systemMessage),
????????????????new?ChatMessage(ChatMessageRole.USER.value(),?userMessage)
????????);
????????//?2.?配置知識庫工具
????????List<ChatTool>?tools?=?Collections.singletonList(createKnowledgeChatTool());
????????//?3.?構(gòu)建請求
????????ChatCompletionRequest?chatCompletionRequest?=?ChatCompletionRequest.builder()
????????????????.model("glm-4-long")?//?使用最新的大模型
????????????????.stream(false)?//?不使用流式輸出
????????????????.invokeMethod(Constants.invokeMethod)
????????????????.messages(messages)?//?已知上下文
????????????????.tools(tools)?//?其他工具:網(wǎng)絡(luò)搜索、知識庫、自定義函數(shù)等
????????????????.build();
????????try?{
????????????//?4.?發(fā)起請求,如果想到達(dá)到GPT那種“打字”效果,可以轉(zhuǎn)換為流式輸出(SSE、Websocket)
????????????ModelApiResponse?invokeModelApiResp?=?client.invokeModelApi(chatCompletionRequest);
????????????return?(String)?Optional.ofNullable(invokeModelApiResp)
????????????????????.map(ModelApiResponse::getData)
????????????????????.map(data?->?data.getChoices().get(0).getMessage().getContent())
????????????????????.orElse("");
????????}?catch?(Exception?e)?{
????????????System.err.println("調(diào)用AI失敗:?"?+?e.getMessage());
????????????return?"";
????????}
????}
????private?static?ChatTool?createKnowledgeChatTool()?{
????????ChatTool?tool?=?new?ChatTool();
????????tool.setType(ChatToolType.RETRIEVAL.value());?//?規(guī)定工具類型為搜索知識庫
????????Retrieval?retrieval?=?new?Retrieval();
????????retrieval.setKnowledge_id(KNOWLEDGE_ID);?//?指定知識庫ID
????????tool.setRetrieval(retrieval);
????????return?tool;
????}
(3)搭建根據(jù)Prompt和用戶輸入得到回答的機(jī)器人
AI面試官:輸入為面試官Prompt+公司名,讓AI根據(jù)知識庫調(diào)出對應(yīng)公司的面試題
AI面試者:輸入為面試者Prompt+剛才面試官提出的問題,讓AI根據(jù)知識庫的解答,回答問題
這是測試函數(shù)的代碼:
????public?static?void?main(String[]?args)?{
????????String?company?=?"字節(jié)";
????????String?aiInterviewerReply?=?invoke(AI_INTERVIEWER_SYSTEM_PROMPT,?company);
????????if?(StringUtils.isEmpty(aiInterviewerReply))?{
????????????return;
????????}
????????//?切分字符串為問題數(shù)組
????????List<String>?questions?=?Arrays.asList(aiInterviewerReply.split("n"));
????????//?按需保存問題和答案
????????Map<String,?String>?questionAnswerMap?=?new?LinkedHashMap<>();
????????questions.forEach(question?->?{
????????????String?userPrompt?=?String.format("---公司名---n%sn---面試問題---n%s",?company,?question);
????????????String?aiApplicantReply?=?invoke(AI_APPLICANT_SYSTEM_PROMPT,?userPrompt);
????????????questionAnswerMap.put(question,?aiApplicantReply);
????????});
????????//?打印結(jié)果
????????printResults(company,?questionAnswerMap);
????}
????private?static?void?printResults(String?company,?Map<String,?String>?questionAnswerMap)?{
????????System.out.println("******?"?+?company?+?"?******");
????????questionAnswerMap.forEach((question,?answer)?->?{
????????????System.out.println("============================");
????????????System.out.println(question);
????????????System.out.println(answer);
????????});
????}
(4)主體函數(shù)完成了,接下來我們來測試一下!也順便看看你能不能答出來吧!
字節(jié)
阿里
騰訊
美團(tuán)
最后
怎么樣?
通過我前面測試的情況,大家肯定也是能明顯感覺到 GLM-4-Plus 在語言理解、長文本處理、邏輯推理能力還是非常強(qiáng)大的。
咱們的算法和面試題方面的問題統(tǒng)統(tǒng)都能被 GLM-4-Plus 模型輕松解決,妥妥就是我們學(xué)習(xí)編程和面試的好幫手。
而且GLM-4-Plus 模型提供的SDK,也可以很簡單就上手了,簡單幾行代碼就能直接調(diào)用 ? GLM-4-Plus 模型接口,極大的縮減了開發(fā)周期。
隨著大模型的普及,未來肯定也會出現(xiàn)更多有意思的AI應(yīng)用,如果你正在做AI相關(guān)的應(yīng)用,那么接入國內(nèi)第一梯隊的GLM-4-Plus 模型是不錯的選擇,不僅能力強(qiáng),而且上手快,更關(guān)鍵價格對開發(fā)者太友好了。
智譜團(tuán)隊也給開發(fā)者們發(fā)了個大福利:新用戶注冊后即可獲贈 1 億額度 Tokens 資源包!
即使用完這個免費的額度 GLM-4-Plus 定價也很實在,一千 Token 僅需0.005元,相比前代旗艦 GLM-4-0520 便宜了 50%,這力度太強(qiáng)了,難道又要卷起一波,國內(nèi)大模型價格戰(zhàn)?
大家可以直接訪問智譜開放平臺 bigmodel.cn 注冊領(lǐng)取,也可以點擊下方「閱讀原文」快速跳轉(zhuǎn)