“您好,想問問你們賣的這商品是什么???”
“您好親親,我們賣的是最新款手機(jī)殼!”
“不是,我是想問你們賣的這都是什么啊???這么難看?!?/code>
本文!重磅!教大家不花一分錢學(xué)會用豆包MarsCode 搭建「商品評論情感分析機(jī)器人」!快速了解消費(fèi)者對商品的真實(shí)看法和情感傾向。
自 Node.js 推出,JavaScript 躍升為一門全棧開發(fā)語言。開發(fā)者可以用同一種語言構(gòu)建完整的 Web 應(yīng)用,從后端服務(wù)到用戶界面,甚至最新的 AI 應(yīng)用,JavaScript 都能勝任。今天就讓我們一起學(xué)習(xí)基于 JavaScript 開發(fā)的「商品評論情感分析機(jī)器人」!
工欲善其事 必先利其器
擁有一個熟悉的開發(fā)環(huán)境至關(guān)重要。于我個人而言,平日里最為青睞的當(dāng)屬 VSCode 這款輕量級代碼編輯器,它頁面簡潔,安裝過程便捷,能夠同時兼容 Windows 和 Mac 系統(tǒng)。并且在 VSCode 中存有眾多實(shí)用插件可供安裝,比如豆包MarsCode(官方下載地址:https://www.marscode.cn/?utm_source=advertising&utm_medium=w3cschool.cn_ug_cpa&utm_term=hw_marscode_bcs&utm_content=home )。 豆包MarsCode安裝教程:http://o2fo.com/marscode/marscode-quickstart.html
豆包MarsCode 具備智能代碼生成功能,能猜測到我想要寫的代碼并主動提示,還能根據(jù)我的需求生成代碼,幫我剖析 bug 產(chǎn)生的原因,讓工作效率翻倍。
對于不想配置環(huán)境的小伙伴們,還可以使用免費(fèi)的豆包MarsCode IDE,開箱即用的 Node.js 環(huán)境很適合新手小白。
申請免費(fèi)的豆包 API
基于大模型的應(yīng)用必然需要訪問大模型的 API 服務(wù),雖然當(dāng)前 OpenAI 的 API 越來越難以獲取,但令人驚喜的是,國內(nèi)各大廠的模型能力已逐步提升至相對成熟的水平,而且還均擁有免費(fèi)的使用額度!比如豆包大模型,每個規(guī)格的模型都有 50 萬免費(fèi) tokens 的額度,接口使用方式也與 OpenAI 完全相同! 在火山方舟中注冊賬號,創(chuàng)建 API Key 并將想用的模型部署為在線服務(wù),平臺就可以直接為我們提供模型的調(diào)用代碼。
免費(fèi)調(diào)用額度
添加API Key
配置本地環(huán)境
火山方舟平臺為我們提供了模型調(diào)用代碼,但想跑起來這段代碼還需要先在本地配置好 Node.js 環(huán)境。
我們可以在豆包MarsCode 中直接詢問 AI 助手:“ Mac 電腦如何安裝 Node.js 環(huán)境
”,按照 AI 助手給我們的指示選擇一種方式安裝,在終端中執(zhí)行 node -v
和 npm -v
,如果能夠正常輸出版本號,則說明我們成功安裝了 Node.js。
根據(jù)火山方舟上的指引,我們還需要手動安裝 OpenAI 軟件包,在終端中執(zhí)行 npm install openai
之后就完成了本地環(huán)境的配置。
在本地跑通模型調(diào)用代碼
選擇一個適合的本地路徑執(zhí)行 npm init
即可交互式地進(jìn)行項(xiàng)目初始化,命令行會提示我們輸入一些關(guān)于項(xiàng)目的元數(shù)據(jù)信息,如項(xiàng)目名稱
、版本
、描述
等。我們可以根據(jù)需要填寫這些信息,或直接按「回車鍵
」接受默認(rèn)值。
詢問豆包MarsCode AI 助手可以了解更多初始化項(xiàng)目的詳細(xì)步驟。
將火山方舟平臺提供的代碼復(fù)制到本地開發(fā)環(huán)境內(nèi),我們可以在豆包MarsCode 中針對不理解的代碼向 AI 助手進(jìn)行提問,例如示例代碼中的 apiKey 需要從環(huán)境變量中獲取,我們可以詢問跟 JS 語法相關(guān)的知識,也可以詢問在不同操作系統(tǒng)中配置環(huán)境變量的方法。
按照指引,在環(huán)境變量中配置 ARK_API_KEY
之后,我們就可以嘗試執(zhí)行測試代碼。
竟然遇到報錯了!命令行中給了我們一些提示,在 package.json
中添加"type
": "module
" 。
我們可以向豆包MarsCode AI 助手詢問錯誤原因,它會給我們更具體的解決方案,我們也能根據(jù) AI 助手的回復(fù)了解 JS 的執(zhí)行原理。
修改代碼之后再次執(zhí)行就能成功獲取豆包模型返回的結(jié)果了。
開發(fā)情感分析相關(guān)代碼
要與豆包 API 對話,則需要在消息數(shù)組中提供一個或多個消息,示例代碼中涉及到了 system
和 user
兩種角色,這時我們可以向 AI 助手詢問:“system 和 user 有什么區(qū)別
”。
若想開發(fā)情感分析的應(yīng)用,通過提示詞工程的方式即可實(shí)現(xiàn),在 system prompt
中填寫如“你是一個用戶評論情感分析專家
”的身份描述,在用戶提示中可以填寫少量的示例,這些示例能夠向人工智能展示您期望交互以何種方式展開,從而指導(dǎo)人工智能對類似的提示做出響應(yīng)。
如果想把用戶輸入動態(tài)注入到 prompt
中則需要用到模板字符串,相關(guān)的語法知識也可以從跟 AI 的對話中獲得。
具體的代碼如下所示:
let few_shot_prompt = `
以下為幾個評論判斷實(shí)例,請依據(jù)示例對新輸入內(nèi)容的情感態(tài)度進(jìn)行判斷
評論:我非常喜歡這個產(chǎn)品,它非常實(shí)用。
情感:正面。
評論:這個產(chǎn)品非常糟糕,我無法使用它。
情感:負(fù)面。
`;
let message = [
{
role: "system",
content:
"你是一個用戶評論情感分析專家,請根據(jù)用戶的評論判斷評論的情感是正面還是負(fù)面并直接輸出,不輸出其他內(nèi)容。",
},
{
role: "user",
content: `${few_shot_prompt}\n 評論:${comment}\n 情感:\n`,
},
];
使用上述代碼替換掉示例代碼中的 messages 就能夠進(jìn)行用戶評論的情感判斷了,只要在代碼中把用戶評論賦值給 comment 就能對其情感狀態(tài)進(jìn)行判斷。
需求當(dāng)然不止這么簡單。我們希望能從命令行中獲得用戶的評論數(shù)據(jù)并傳給豆包。有了豆包MarsCode AI 之后,僅需 10 秒鐘就能完成代碼改造!如下圖所示,只要我能把需求準(zhǔn)確的描述給 AI 助手,他就能很快地把代碼提供給我,直接執(zhí)行也沒有問題。
更進(jìn)一步,倘若我們期望程序可以反復(fù)處理用戶輸入,而非僅調(diào)用一次便退出程序,同樣能將此需求告知 AI 助手,它會給出滿足需求的新代碼,從而最終打造出能夠多次處理產(chǎn)品評論情感態(tài)度的小應(yīng)用。
完整代碼呈現(xiàn)
在豆包MarsCode 的幫助下,即便是從未涉足過 JavaScript 應(yīng)用開發(fā)領(lǐng)域的新手,也可以開發(fā)出實(shí)用的 AI 工具。豆包MarsCode 的 AI 問答、錯誤修復(fù)以及代碼補(bǔ)全等功能,在開發(fā)過程中都能提供非常實(shí)用的幫助。完整的代碼如下:
import OpenAI from "openai";
import readline from "readline";
const openai = new OpenAI({
apiKey: process.env.ARK_API_KEY,
baseURL: "https://ark.cn-beijing.volces.com/api/v3",
});
async function main() {
let few_shot_prompt = `
以下為幾個評論判斷實(shí)例,請依據(jù)示例對新輸入內(nèi)容的情感態(tài)度進(jìn)行判斷
評論:我非常喜歡這個產(chǎn)品,它非常實(shí)用。
情感:正面。
評論:這個產(chǎn)品非常糟糕,我無法使用它。
情感:負(fù)面。
`;
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
function askQuestion() {
rl.question("請輸入你的評論(或輸入 '退出' 結(jié)束程序):", async (answer) => {
if (answer.toLowerCase() === '退出') {
rl.close();
return;
}
let message = [
{
role: "system",
content:
"你是一個用戶評論情感分析專家,請根據(jù)用戶的評論判斷評論的情感是正面還是負(fù)面并直接輸出,不輸出其他內(nèi)容。",
},
{
role: "user",
content: `${few_shot_prompt}\n 評論:${answer}\n 情感:\n`,
},
];
try {
const completion = await openai.chat.completions.create({
messages: message,
model: "ep-20240809163655-bp86r",
});
console.log(completion.choices[0]?.message?.content);
} catch (error) {
console.error("發(fā)生錯誤:", error);
}
// 繼續(xù)詢問
askQuestion();
});
}
askQuestion();
}
main();
無需一分錢開發(fā)評論情感分析機(jī)器人,感興趣的大家點(diǎn)擊「豆包MarsCode」即可跳轉(zhuǎn)豆包MarsCode 嘗試開發(fā)哦!