ãã®èšäºã¯ãDocker AI/ML ããã«ãœã³ã®åå è ã§ãã Gitanshu Sankhla æ°ãš Vijay Barma æ°ãšå ±åã§å·çãããŸããã
ãã® AI/ML ããã«ãœã³ã®æçš¿ã§ã¯ãæšå¹Žã® Docker AI/ML ããã«ãœã³ã§åè³ããå¥ã®è峿·±ããããžã§ã¯ãã玹ä»ããŸãã ä»åã¯ã䜳äœåè³è ã®1ã€ã§ããReadMeAIã«ã€ããŠæãäžããŸããÂ
å€ãã®éçºè ã«ãšã£ãŠãã³ãŒãã®èšç»ãšèšè¿°ã¯ãããã»ã¹ã®äžã§æã楜ããéšåã§ãã ã¯ãªãšã€ãã£ããã£ãšããžãã¯ãèåããã³ãŒãè¡ããœãªã¥ãŒã·ã§ã³ã«å€ããå Žæã§ãã ããã¥ã¡ã³ããæžãããšã«ãããããæããéçºè ãããŸãããæç¢ºã§ç°¡æœãªã³ãŒãåœä»€ãäœæããããšã¯èª°ã«ã§ãã§ããããã§ã¯ãããŸããã
ããªããããŒã ã§è€éãªãããžã§ã¯ãã«åãçµãã§ããéçºè ã ãšæ³åããŠã¿ãŠãã ããã å®å µã®å ããèŠããŠæåŸã®ã³ããããããã·ã¥ããã°ããã§ãããç· ãåãã¯å»ã ãšéããŠããŸãã æç¢ºãªããã¥ã¡ã³ããéèŠã§ããããšã¯ãåãã®ãšããã§ãã ã¹ã ãŒãºãªçµ±åã®ããã«ã¯ãããŒã ã¡ã€ããã³ãŒãã®è€éããçè§£ããå¿ èŠããããŸããããã¹ãŠã®ããã¥ã¡ã³ããæžãããšã¯ããã°ä¿®æ£ããã¹ããã貎éãªæéã奪ããããŸã£ããå¥ã®ãããžã§ã¯ãã®ããã«æããããŸãã ããã§ãAIæèŒã® READMEãžã§ãã¬ãŒã¿ãŒã§ããReadMeAIãç»å ŽããŸããÂ

ReadMeAIã®ç¹åŸŽã¯?
AI/MLããã«ãœã³ã«æåºããã以äžã®ãã¢ã¯ãReadMeAIã®æŠèŠã瀺ããŠããŸã(å³ 1)ã
ReadMeAIããŒã«ã䜿çšãããšããŠãŒã¶ãŒã¯ã³ãŒããã¡ã€ã«ãã¢ããããŒãããŠãããžã§ã¯ããèšè¿°ã§ããŸãã ãã®ããŒã«ã¯ãã³ãŒããšãã£ã¿ã䜿çšããŠãªã¢ã«ã¿ã€ã ã§ç·šéã§ããMarkdownã³ãŒããçæãã倿Žãå³åº§ã«ãã¬ãã¥ãŒãããŸãã
ReadmeAIã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã£ãããšã¢ãã³ã«ãªãããã«èšèšãããŠããããããã¹ãŠã®ãŠãŒã¶ãŒã䜿ããããã¢ããªã±ãŒã·ã§ã³ã«ãªã£ãŠããŸãã
ReadMeAIã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- ç°¡åãªããã¥ã¡ã³ãäœæ:ã³ãŒããã¢ããããŒãããç°¡åãªèª¬æãå ¥åãããšãReadMeAIãREADMEçšã®å æ¬çãªããŒã¯ããŠã³ãã¡ã€ã«ãã·ãŒã ã¬ã¹ã«çæããŸãã
- ã·ãŒã ã¬ã¹ãªã³ã©ãã¬ãŒã·ã§ã³: ReadMeAI ã¯ãéèŠãªã»ã¯ã·ã§ã³ãå«ãé©åã«æ§æããã README ãä¿é²ããããŒã ãã³ãŒãããŒã¹ãçè§£ããŠè²¢ç®ããããããããã¹ã ãŒãºãªã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
- å¹çã®åäž: å®åæã®ææžåã«æéãæµªè²»ããã®ããããŸãã ReadMeAIã¯ãREADMEã®åçš¿ãèªååããéçºè ã®è²Žéãªæéãã³ãŒãã£ã³ã°ããã¹ãããã®ä»ã®éèŠãªãããžã§ã¯ãã¿ã¹ã¯ã«å ãŠãããšãã§ããŸãã
ãŠãŒã¹ã±ãŒã¹ã«ã¯ã次ã®ãããªãã®ããããŸãã
- APIããã¥ã¡ã³ãã®ããã¯ãªã:ReadMeAIã¯ãAPIããã¥ã¡ã³ãã®åŒ·åºãªåºç€ãæäŸããŸãã ããã«ãããAPI ãšã³ããã€ã³ãããã©ã¡ãŒã¿ãŒãããã³äºæ³ãããå¿çã®æŠèŠã瀺ãæåã®ãã©ãããçæãããŸãã ããã«ãããããã»ã¹ã掻æ§åããAPI ã®æ©èœã®è©³çްã«éäžã§ããŸãã
- ã©ããããããã¿ã€ãã³ã°ãšææžå: ã©ããããããã¿ã€ãã³ã°ã§ã¯ãå€ãã®å Žåãããã¥ã¡ã³ããããæ©èœãåªå ãããŸãã ReadMeAIã¯ããã®ã®ã£ãããåããŸãã ã³ã¢æ å ±ãå«ãåºæ¬ç㪠README ããã°ããçæãããããéçºè ã¯ãããã¿ã€ãã®æ§ç¯ã«éäžããªããããã¥ã¡ã³ããäœæã§ããŸãã
- ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ããã¯ãªã: ReadMeAIã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ããã¥ã¡ã³ãäœæããã»ã¹ãããã«éå§ã§ããŸãã ã³ãŒãããŒã¹ãšç°¡åãªèª¬æãå ¥åããã ãã§ãReadMeAIã¯ãã€ã³ã¹ããŒã«æé ã䜿çšäŸãã³ã³ããªãã¥ãŒã·ã§ã³ã¬ã€ãã©ã€ã³ãªã©ã®éèŠãªã»ã¯ã·ã§ã³ãå«ããé©åã«æ§é åãããREADMEãã¡ã€ã«ãçæããŸãã ããã«ãããæéãç¯çŽãããããžã§ã¯ãå šäœã§äžè²«æ§ã®ããããã¥ã¡ã³ãã確ä¿ã§ããŸãã
ããªããæãåŸæãšããããšãã€ãŸãã³ãŒãã£ã³ã°ã«éäžããŠãã ããã ããšã¯ReadMeAIã«ãä»»ããã ããã
ããã¯ã©ã®ããã«æ©èœããŸãã?
ReadMeAIã¯ãã³ãŒããšèª¬æãèŠæ ãã®è¯ãREADMEãã¡ã€ã«ã«å€æããŸãã ãŠãŒã¶ãŒã¯ã³ãŒããã¡ã€ã«ãã¢ããããŒãããã³ãŒããæ°èªã§èª¬æããããšãã§ããReadMeAIã¯READMEçšã®Markdownã³ãŒããçæããŸãã å¿ èŠã«å¿ããŠREADMEããã©ãŒãããããããã®çµã¿èŸŒã¿ãšãã£ã¿ãŒãå ¥æããREADMEãMarkdownããã³HTML圢åŒã§ããŠã³ããŒãã§ããŸããÂ
å³ 2 ã¯ãReadMeAI ã¢ãŒããã¯ãã£ã®æŠèŠã瀺ããŠããŸãã

ãã¯ãã«ã«ã¹ã¿ãã¯
ReadMeAIæè¡ã¹ã¿ãã¯ã«ã¯ä»¥äžãå«ãŸããŸãã
- Node.js: ãµãŒããŒåŽã®ããžãã¯ãšå¯Ÿè©±ãåŠçãããµãŒããŒåŽã®ã©ã³ã¿ã€ã ã
- è¿°ã¹ãïŒ ã«ãŒãã£ã³ã°ãããã«ãŠã§ã¢ãããã³èŠæ±åŠçãåŠçããäžè¬çãªNode.jsãã¬ãŒã ã¯ãŒã¯ã
- Google PaLM API: Google ã® Pathways Language Model(PaLM)ã¯ã 54000 åã®ãã©ã¡ãŒã¿å€æããŒã«ããŒã¹ã®å€§èŠæš¡èšèªã¢ãã«ã§ãã ããã¯ãã¢ããããŒããããã³ãŒããšãŠãŒã¶ãŒã®èª¬æã«åºã¥ããŠMarkdown READMEãçæããããã«ReadMeAIãããžã§ã¯ãã§äœ¿çšãããŸãã
- åã蟌㿠JavaScript (EJS): ãµãŒããŒåŽã§åçã³ã³ãã³ããã¬ã³ããªã³ã°ã㊠HTML ã«è¿œå ã§ãããã³ãã¬ãŒã ãšã³ãžã³ã
- ã«ã¹ã±ãŒã ã¹ã¿ã€ã« ã·ãŒã (CSS): çæãããMarkdownã³ã³ãã³ãã«ã¹ã¿ã€ã«ã远å ããŸãã
- JavaScriptã®å Žå: ããã³ããšã³ãã«ã€ã³ã¿ã©ã¯ãã£ããã£ã远å ããã¯ã©ã€ã¢ã³ãåŽã®ããžãã¯ãåŠçãããµãŒããŒåŽãšéä¿¡ããŸãã
AIçµ±åãšããŒã¯ããŠã³çæ
AI çµ±åã¯ã controllers/app.js ãã¡ã€ã« (以äžãåç
§) ã«ãã£ãŠãç¹ã« postApp 颿°ã§åŠçãããŸãã ã¢ããããŒããããã³ãŒããšãŠãŒã¶ãŒã®èª¬æã¯ AI ã€ã³ãã°ã¬ãŒã·ã§ã³ã«æž¡ãããAI ã€ã³ãã°ã¬ãŒã·ã§ã³ã¯ Google Palm API ã䜿çšã㊠Markdown README ãçæããŸããÂ
Markdown ãžã§ãã¬ãŒã¿ãŒã¯ãpostApp 颿°ã«å®è£
ãããŠããŸãã AIãçæããã³ã³ãã³ãã¯ã showdown ã©ã€ãã©ãªã䜿çšããŠMarkdown圢åŒã«å€æãããŸãã
const fs = require('fs');
const path = require('path');
const showdown = require('showdown');
const multer = require('multer');
const zip = require('express-zip');
const palmApi = require('../api/fetchPalm');
// showdown converter
const converter = new showdown.Converter();
converter.setFlavor('github');
// getting template
let template;
fs.readFile('./data/template.txt', 'utf8', (err, data) => {
if (err) {
console.error(err)
return
}
template = data;
});
// getting '/'
exports.getApp = (req, res)=>{
res.render('home', {
pageTitle: 'ReadMeAI - Home'
})
}
exports.getUpload = (req, res)=>{
res.render('index', {
pageTitle: 'ReadMeAI - Upload'
})
}
// controller to sent generate readme from incoming data
exports.postApp = (req, res)=>{
let html, dt;
const code = req.file.filename;
const description = req.body.description;
try {
dt = fs.readFileSync(`uploads/${code}`, 'utf8');
} catch (err) {
console.error("read error",err);
}
palmApi.getData(template, dt, description)
.then(data => {
html = converter.makeHtml(data);
res.render('editor', {
pageTitle: 'ReadMeAI - Editor',
html: html,
md: data
});
//deleting files from upload folder
fs.unlink(`uploads/${code}`, (err) => {
if (err) {
console.error(err);
return;
}
console.log('File deleted successfully');
});
}).catch(err => console.log('error occured',err));
}
exports.postDownload = (req, res) => {
const html = req.body.html;
const md = req.body.markdown;
const mdFilePath = path.join(__dirname, '../downloads/readme.md');
const htmlFilePath = path.join(__dirname, '../downloads/readme.html');
fs.writeFile(mdFilePath, md, (err) => {
if (err) console.error(err);
else console.log('Created md file successfully');
});
fs.writeFile(htmlFilePath, html, (err) => {
if (err) console.error(err);
else console.log('Created html file successfully');
});
res.zip([
{ path: mdFilePath, name: 'readme.md' },
{ path: htmlFilePath, name: 'readme.html' }
]);
}
ã³ã³ãããŒã©ãŒé¢æ° (gettAppã getUploadã postAppã postDownload) ã¯ãåä¿¡èŠæ±ãåŠçããAI çµ±åãããŒã¯ããŠã³ ãžã§ãã¬ãŒã¿ãŒãããã³ãã¥ãŒãšå¯Ÿè©±ããŸãã Markdown ã³ã³ãã³ããçæããåŸãã³ã³ãããŒã©ãŒã¯çæãããã³ã³ãã³ããé©åãªãã¥ãŒã«æž¡ããŸãã
ãããã®ã³ã³ãããŒã©ãŒé¢æ°ã¯ãšã¯ã¹ããŒãããã routes/app.js ãã¡ã€ã«ã§å®çŸ©ãããã«ãŒãã§äœ¿çšãããŸãã
衚瀺ã¢ãŒãÂ
ãã¥ãŒã¯ views/ ãã£ã¬ã¯ããªã§å®çŸ©ãããŸãã editor.ejs ãã¡ã€ã«ã¯ããšãã£ã¿ãŒ ãã¥ãŒã®ã¬ã³ããªã³ã°ãæ
åœããåã蟌㿠JavaScript (EJS) ãã¡ã€ã«ã§ããããã¯ãã¯ã©ã€ã¢ã³ãã«éä¿¡ããã HTML ããŒã¯ã¢ãããçæããããã«äœ¿çšãããŸãã
<%- include('includes/head.ejs') %>
<!-- google fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" />
<!-- stylesheets -->
<link rel="stylesheet" href="/css/edistyles.css">
<link rel="stylesheet" href="/css/output.css">
</head>
<body>
<header class="header-nav">
<h1 class="logo">ReadMeAI</h1>
<div class="light-container">
<div class="phone">
<span class="material-symbols-outlined" id="rotate-item">
phone_iphone</span>
</div>
<div class="tubelight">
<div class="bulb"></div>
</div>
</div>
</header>
<main class="main">
<div class="mobile-container">
<p>Sorry but the editor is disable on mobile device's, but it's best experienced on a PC or Tablet </p>
.....
<button class="btn-containers" id="recompile">
<span class="material-symbols-outlined">bolt</span>
</button>
</header>
<textarea name="textarea" id="textarea" class="sub-container output-container container-markdown" ><%= md %></textarea>
</div>
.....
<!-- showdown cdn -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js" integrity="sha512-LhccdVNGe2QMEfI3x4DVV3ckMRe36TfydKss6mJpdHjNFiV07dFpS2xzeZedptKZrwxfICJpez09iNioiSZ3hA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- ionicons cdn -->
<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
<script src="/scripts/edi-script.js"></script>
<script src="/scripts/tubelightBtn.js"></script>
</body>
ãã¥ãŒã®ã¬ã³ããªã³ã°
ã³ã³ãããŒã©ãŒã¯ãçæãããã³ã³ãã³ãã§é©åãªãã¥ãŒãã¬ã³ããªã³ã°ããããAPI å¿çãæäŸããŸãã editor.ejsãã¥ãŒã¯ãçæããã Markdown ã³ã³ãã³ã (html: htmlãmd: data) ã§ã¬ã³ããªã³ã°ãããŸãã
exports.postApp = (req, res) => {
//...
// Generate Markdown content
//...
res.render('editor', {
pageTitle: 'ReadMeAI - Editor',
html: html,
md: data
});
};
postApp 颿°ãåŒã³åºããããšãpalmApi.getData 颿°ã䜿çšããŠããã³ãã¬ãŒããåä¿¡ Markdown ã³ã³ãã³ããããã³æå®ããã説æã«åºã¥ã㊠Palm API ããããŒã¿ãååŸããŸããããŒã¿ãååŸããããšã converter.makeHtml 颿°ã䜿çšã㊠Markdown ã³ã³ãã³ãã HTML ã«å€æããŸãã
次ã«ã res.render 颿°ã䜿çšããŠãçæããã HTML ã³ã³ãã³ããš Markdown ã³ã³ãã³ãã§ãšãã£ã¿ãŒ ãã¥ãŒãã¬ã³ããªã³ã°ããŸãã editor.ejsãã¥ãŒã«ã¯ãHTML ã³ã³ãã³ããš Markdown ã³ã³ãã³ããç®çã®åœ¢åŒã§è¡šç€ºããããã«å¿
èŠãªã³ãŒããå¿
èŠã§ãã
ãã®ã¢ãããŒãã«ãããåä¿¡ãã Markdown ã³ã³ãã³ããšæäŸããããã³ãã¬ãŒãã«åºã¥ã㊠README ã³ã³ãã³ããåçã«çæã§ããŸãã çæããã HTML ã³ã³ãã³ãã¯ããŠãŒã¶ãŒã衚瀺ã§ããããã« Web ããŒãžã«ã¬ã³ããªã³ã°ãããŸãã
å¿çã®éä¿¡Â
ã¬ã³ããªã³ã°ããããã¥ãŒã¯ã res.render 颿°ã䜿çšããŠã¯ã©ã€ã¢ã³ããžã®å¿çãšããŠéä¿¡ãããŸãã ãã®é¢æ°ã¯ããã¥ãŒãã¬ã³ããªã³ã°ããããã«äœ¿çšãããŸãã ãã®ããã»ã¹ã«ãããçæããã Markdown ã³ã³ãã³ãã¯ãæå®ããããã³ãã¬ãŒãã䜿çšã㊠Web ããŒãžã«åçã«ã¬ã³ããªã³ã°ãããWeb ããŒãžãå¿çãšããŠã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸãã
ã¯ãã
éå§ããã«ã¯ã ææ°ããŒãžã§ã³ã® Docker Desktop ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã
ãªããžããªã®ã¯ããŒã³ãäœæãã
ã¿ãŒããã« ãŠã£ã³ããŠãéããæ¬¡ã®ã³ãã³ããå®è¡ããŠãµã³ãã« ã¢ããªã±ãŒã·ã§ã³ãè€è£œããŸãã
git clone https://github.com/Gitax18/ReadMeAI
ããã§ã ReadMeAI ãã£ã¬ã¯ããªã«æ¬¡ã®ãã¡ã€ã«ãããã¯ãã§ãã
ReadMeAI
âââ CONTRIBUTING.md
âââ Dockerfile
âââ LICENSE
âââ README.md
âââ api
â âââ fetchPalm.js
âââ controllers
â âââ app.js
âââ data
â âââ output.md
â âââ template.txt
âââ downloads
â âââ readme.html
â âââ readme.md
âââ package-lock.json
âââ package.json
âââ public
â âââ css
â â âââ edistyles.css
â â âââ home.css
â â âââ index.css
â â âââ output.css
â âââ images
â â âââ PaLM_API_Graphics-02.width-1200.format-webp.webp
â â âââ logos
â â â âââ dh.png
â â â âââ dp.png
â â â âââ gh.png
â â âââ pre.png
â â âââ vscode.jpg
â âââ scripts
â âââ edi-script.js
â âââ home.js
â âââ index.js
â âââ tubelightBtn.js
âââ routes
â âââ app.js
âââ server.js
âââ uploads
â âââ 1699377702064#Gradient.js
â âââ important.md
âââ views
âââ 404.ejs
âââ editor.ejs
âââ home.ejs
âââ includes
â âââ head.ejs
âââ index.ejs
14 directories, 35 files
ãããžã§ã¯ãã®ãã£ã¬ã¯ããªæ§é ãçè§£ãã
ãããžã§ã¯ãã®ãã£ã¬ã¯ããªæ§é ã®æŠèŠãšãåãã©ã«ããŒãšãã¡ã€ã«ã®ç®çã¯æ¬¡ã®ãšããã§ãã
api/: Google PaLM 2ãªã©ã®ãµãŒãããŒã㣠API ã«æ¥ç¶ããããã®ã³ãŒããå«ãŸããŠããŸããcontrollers/: POST/GET èŠæ±ãåŠçããããã®ãã¹ãŠã®ããžãã¹ ããžãã¯ãå«ãŸããŠããŸããviews/: ã¯ã©ã€ã¢ã³ãåŽã§ã¬ã³ããªã³ã°ããããã®ãã¡ã€ã«ãå«ãŸããŠããŸããdata/:åºåã®ããã³ãã¬ãŒãããšãoutput.mdããä¿æããŸã çæãããããŒã¯ããŠã³ãpublic/: ã¯ã©ã€ã¢ã³ãåŽã® CSS ãšã¹ã¯ãªãããå«ãŸããŸããroutes/: ã«ãŒãã管çããã«ãŒãããšã«ããããã®ã³ã³ãããŒã©ãŒé¢æ°ãåŒã³åºããŸããuploads/: ã¯ã©ã€ã¢ã³ãåŽããåä¿¡ãããã¡ã€ã«ãäžæçã«ä¿åããã»ãã·ã§ã³ãçµäºãããšåé€ãããŸããserver.js: ãµãŒããŒã®èµ·åæã«å®è¡ãããã¡ã€ã³ã® Express ãµãŒããŒãã¡ã€ã«ã- Dockerfile: ãããžã§ã¯ããã³ã³ãããŒåããããã®ã¹ã¯ãªãããå«ãŸããŠããŸãã
ã¢ããªã®æ§ç¯
次ã®ã³ãã³ããå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ããã«ãããŸãã
docker build -t readmeai .
ã¢ããªãå®è¡ããŸãã
docker run -d -p 3333:3333 readmeai
次ã®ãããªãã°åºåã衚瀺ãããŸãã
> readme-ai-generator@1.0.0 start
> node server.js
server is listening at http://localhost:3333

ãŸãã¯ã次ã®ã³ãã³ãã䜿çšããŠã Docker Hub (å³ 3)ããReadMeAI Dockerã€ã¡ãŒãžãçŽæ¥ãã«ããŠå®è¡ããããšãã§ããŸãã
docker run -it -p 3333:3333 gitax18/readmeai
http://localhost:3333 ã§ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããã¯ãã§ã(å³4)ã

[æ¢çŽ¢] ãéžæãã[ã¯ãªãã¯ããŠãã¡ã€ã«ãã¢ããããŒã] ãéžæããŠãœãŒã¹ ã³ãŒã ãã¡ã€ã«ãã¢ããããŒãããŸã (å³ 5)ã

ãããžã§ã¯ãã®èª¬æãçµäºãããã[ çæ] ãéžæããŸã(å³ 6)ã

ReadMeAIã¯ãGoogleã®Generative Language APIãå©çšããŠããŠãŒã¶ãŒãæäŸãããã³ãã¬ãŒããã³ãŒãã¹ããããã説æã«åºã¥ããŠãã©ããREADMEãã¡ã€ã«ãäœæããŸã(å³ 7)ã

次ã¯äœã§ãã?
ReadMeAIã¯ãéçºè ãçŽé¢ããäžè¬çãªåé¡ãã€ãŸãããããžã§ã¯ãããã¥ã¡ã³ããäœæãããšããæéããããããã°ãã°äžå®å šãªã¿ã¹ã¯ã«è§ŠçºãããŸããã ReadMeAIã¯ãããã»ã¹ãåçåããããã«éçºãããéçºè ã¯ããã¥ã¡ã³ãäœæã§ã¯ãªãã³ãŒãã£ã³ã°ã«éäžã§ããããã«ãªããŸããã ãã®ãã©ãããã©ãŒã ã¯ãã³ãŒããšç°¡åãªèª¬æãå æ¬çã§èŠèŠçã«é åçãªREADMEãã¡ã€ã«ã«ç°¡åã«å€æããŸãã
ç§ãã¡ã¯ãReadMeAIã®åµæå·¥å€«ãç¹ã«éçºè ã³ãã¥ããã£ã®æ ¹æ¬çãªåé¡ã解決ããããšã«åºæ¿ãåããŠããŸããÂ
ä»åŸãã¯ãªãšã€ã¿ãŒã¯ãGitHubçµ±åãã«ã¹ã¿ã ãã³ãã¬ãŒããLlamaãªã©ã®æ¹åãããAIã¢ãã«ãªã©ã®æ©èœã§ReadMeAIã匷åããããšãèšç»ããŠããŸãã æ°ãããã¯ãããžãŒãšã¢ãŒããã¯ãã£ãæ¡çšããããšã§ãReadMeAIãããã«åŒ·åã§å¹ççãªãã®ã«ããããšãèšç»ããŠããŸãã
ReadMeAIã äžçäžã®éçºè ã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã«ããããã«ããã®æ ã«åå ããŠãã ããã
ããã«è©³ãã
- Docker Newsletter ã賌èªããŠãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 次ã®ãã®ã«æç¥šããŠãã ãã! å ¬éããŒãããããã芧ãã ããã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã