[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":80,"blog-\u002Fblog\u002Fllm-prompt-engineering":589,"blog-author-\u002Fblog\u002Fllm-prompt-engineering":1236},{"id":4,"extension":5,"footer":6,"header":66,"meta":77,"stem":78,"__hash__":79},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":10,"legal":56},{"name":8,"tagline":9},"Pieces","The memory layer for modern work.",[11,26,41],{"title":12,"links":13},"Product",[14,17,21,24],{"label":15,"href":16},"Pieces Desktop","\u002Fdownloads",{"label":18,"href":19,"external":20},"Pieces MCP","url:docs.mcp.overview",true,{"label":22,"href":23,"external":20},"Pieces APIs","url:docs.api",{"label":25,"href":16},"Downloads",{"title":27,"links":28},"Resources",[29,32,35,38],{"label":30,"href":31,"external":20},"Documentation","url:docs.home",{"label":33,"href":34},"Blog","\u002Fblog",{"label":36,"href":37},"Changelog","\u002Fchangelog",{"label":39,"href":40,"external":20},"GitHub","url:github.org",{"title":42,"links":43},"Company",[44,47,50,53],{"label":45,"href":46},"About","\u002Fabout",{"label":48,"href":49},"Enterprise","\u002Fenterprise",{"label":51,"href":52,"external":20},"Discord","url:social.discord",{"label":54,"href":55,"external":20},"X \u002F Twitter","url:social.x",[57,60,63],{"label":58,"href":59,"external":20},"Privacy Policy","url:legal.privacyPolicy",{"label":61,"href":62,"external":20},"Refund Policy","url:legal.refundPolicy",{"label":64,"href":65,"external":20},"Terms of Service","url:legal.terms",{"links":67,"signIn":68,"contact":71,"cta":74},[],{"label":69,"href":70},"Sign in","url:portal.home",{"label":72,"href":73},"Contact sales","url:site.contact",{"label":75,"href":76},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","Ia8tCWWqcGvuaIro8jwZ3HH-MwI66yqJpWshASJdYQ0",{"id":81,"extension":5,"links":82,"meta":586,"stem":587,"__hash__":588},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,238,242,246,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,393,396,400,404,408,412,416,420,423,426,429,432,436,440,444,448,452,456,460,464,468,472,476,480,484,488,492,495,499,503,507,511,515,519,523,527,531,534,538,542,546,550,553,557,561,565,568,571,575,579,582],{"key":84,"label":85,"href":86},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":88,"label":89,"href":90},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":92,"label":93,"href":94},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":96,"label":97,"href":98},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":100,"label":101,"href":102},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":104,"label":105,"href":106},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":108,"label":109,"href":110},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":112,"label":113,"href":114},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":116,"label":117,"href":118},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":120,"label":121,"href":122},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":124,"label":125,"href":126},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":128,"label":129,"href":130},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":132,"label":133,"href":134},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":136,"label":137,"href":138},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":140,"label":141,"href":142},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":144,"label":145,"href":146},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":148,"label":149,"href":150},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":152,"label":153,"href":154},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":156,"label":157,"href":158},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":160,"label":161,"href":162},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":164,"label":165,"href":166},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":168,"label":169,"href":170},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":172,"label":173,"href":174},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":176,"label":177,"href":178},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":180,"label":181,"href":182},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":184,"label":185,"href":186},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":188,"label":189,"href":190},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":192,"label":193,"href":194},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":196,"label":197,"href":198},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":200,"label":201,"href":202},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":204,"label":205,"href":206},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":208,"label":209,"href":210},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":212,"label":213,"href":214},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":216,"label":217,"href":218},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":220,"label":221,"href":222},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":224,"label":225,"href":226},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":228,"label":229,"href":230},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":232,"label":233,"href":234},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":236,"label":237,"href":86},"docs.desktop.download","Desktop download docs",{"key":239,"label":240,"href":241},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":243,"label":244,"href":245},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":247,"label":248,"href":154},"docs.piecesOS.install","PiecesOS install docs",{"key":250,"label":251,"href":252},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":254,"label":255,"href":256},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":258,"label":259,"href":260},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":262,"label":263,"href":264},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":266,"label":267,"href":268},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":270,"label":271,"href":272},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":274,"label":275,"href":276},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":278,"label":279,"href":280},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":282,"label":283,"href":284},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":286,"label":287,"href":288},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":290,"label":291,"href":292},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":294,"label":295,"href":296},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":298,"label":299,"href":300},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":302,"label":303,"href":304},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":306,"label":307,"href":308},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":310,"label":311,"href":312},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":314,"label":315,"href":316},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":318,"label":319,"href":320},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":322,"label":323,"href":324},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":326,"label":327,"href":328},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":330,"label":331,"href":332},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":334,"label":335,"href":336},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":338,"label":339,"href":340},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":342,"label":343,"href":344},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":346,"label":347,"href":348},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":350,"label":351,"href":352},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":354,"label":355,"href":356},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":358,"label":359,"href":360},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":362,"label":363,"href":364},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":366,"label":367,"href":368},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":370,"label":371,"href":372},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":374,"label":375,"href":376},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":378,"label":379,"href":380},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":382,"label":383,"href":384},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":386,"label":387,"href":388},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":390,"label":391,"href":392},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":394,"label":36,"href":395},"site.changelog","https:\u002F\u002Fpieces.app\u002Fchangelog",{"key":397,"label":398,"href":399},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":401,"label":402,"href":403},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":405,"label":406,"href":407},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":409,"label":410,"href":411},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":413,"label":414,"href":415},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":417,"label":418,"href":419},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":421,"label":33,"href":422},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":424,"label":51,"href":425},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":427,"label":54,"href":428},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":430,"label":431,"href":428},"social.twitter","Twitter",{"key":433,"label":434,"href":435},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":437,"label":438,"href":439},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":441,"label":442,"href":443},"social.linkedin","LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":445,"label":446,"href":447},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":449,"label":450,"href":451},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":453,"label":454,"href":455},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":457,"label":458,"href":459},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":461,"label":462,"href":463},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":465,"label":466,"href":467},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":469,"label":470,"href":471},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":473,"label":474,"href":475},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":477,"label":478,"href":479},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":481,"label":482,"href":483},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":485,"label":486,"href":487},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":489,"label":490,"href":491},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":493,"label":494,"href":194},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":496,"label":497,"href":498},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":500,"label":501,"href":502},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":504,"label":505,"href":506},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":508,"label":509,"href":510},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":512,"label":513,"href":514},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":516,"label":517,"href":518},"legal.privacyPolicy","Privacy policy","https:\u002F\u002Fpieces.app\u002Flegal\u002Fprivacy-policy",{"key":520,"label":521,"href":522},"legal.refundPolicy","Refund policy","https:\u002F\u002Fpieces.app\u002Flegal\u002Frefund-policy",{"key":524,"label":525,"href":526},"legal.terms","Terms","https:\u002F\u002Fpieces.app\u002Flegal\u002Fterms",{"key":528,"label":529,"href":530},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":532,"label":533,"href":447},"videos.youtubeChannel","YouTube channel",{"key":535,"label":536,"href":537},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":539,"label":540,"href":541},"videos.snippetDiscovery","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":543,"label":544,"href":545},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":547,"label":548,"href":549},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":551,"label":552,"href":463},"sales.feedback","Feedback discussions",{"key":554,"label":555,"href":556},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":558,"label":559,"href":560},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":562,"label":563,"href":564},"routes.home","Home route","\u002F",{"key":566,"label":567,"href":46},"routes.about","About route",{"key":569,"label":570,"href":16},"routes.downloads","Downloads route",{"key":572,"label":573,"href":574},"routes.pricing","Pricing route","\u002Fpricing",{"key":576,"label":577,"href":578},"routes.security","Security route","\u002Fsecurity",{"key":580,"label":581,"href":49},"routes.enterprise","Enterprise route",{"key":583,"label":584,"href":585},"routes.thankYou","Thank you \u002F download route","\u002Fthank-you",{},"data\u002Fshared\u002Furls","P27xKEauu8D-8sfyr0wR4giF0teFSaCuAQ8kgcICQdI",{"id":590,"title":591,"author":592,"authorPhoto":593,"authorPhotoAlt":594,"authorSlug":595,"body":596,"buttonText":1221,"buttonUrl":1222,"category":1223,"date":1224,"description":1225,"draft":1226,"editorsPick":1226,"extension":1227,"featured":1226,"image":1228,"imageAlt":594,"meta":1229,"navigation":20,"ogImage":594,"ogImageAlt":594,"path":1230,"seo":1231,"stem":1232,"tags":1233,"__hash__":1235},"blog\u002Fblog\u002Fllm-prompt-engineering.md","LLM prompt engineering | Tutorial for developers","Jim Bennett","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fjim-bennett.png",null,"jim-bennett",{"type":597,"value":598,"toc":1205},"minimark",[599,603,619,622,625,628,644,647,652,655,662,675,678,688,691,694,721,724,729,732,736,750,755,758,761,770,773,778,781,787,790,799,802,811,814,817,821,824,827,832,835,838,841,844,848,855,869,873,876,880,883,886,890,893,896,906,912,915,919,922,925,931,934,939,943,952,956,966,977,985,988,991,1003,1006,1012,1015,1021,1024,1030,1033,1039,1042,1048,1051,1057,1060,1063,1075,1079,1082,1085,1088,1091,1094,1101,1104,1107,1133,1137,1140,1143,1149,1152,1155,1158,1164,1170,1174,1177,1180,1187,1190,1193,1196,1199,1202],[600,601,602],"p",{},"In the 2006 James Bond movie, Casino Royale, Bond is seated at the Poker table and is offered a drink. First, he asks for a dry martini, but then quickly corrects himself, and asks for:",[604,605,606,610,613,616],"ul",{},[607,608,609],"li",{},"3 measures of Gordons",[607,611,612],{},"1 of Vodka",[607,614,615],{},"Half a measure of Kina Lillet",[607,617,618],{},"Shake it over ice and then add a thin slice of lemon peel",[600,620,621],{},"Now apart from making me thirsty and giving me a desire to spend time back in the novels of Ian Flemming, there is a point to this. If Bond had stuck with ‘dry martini’, he’d have just ended up with a standard martini, maybe with gin, maybe with vodka.",[600,623,624],{},"Instead, by providing more detailed instructions, he enjoyed a Vespa, a far superior choice. This is very similar to how we interact with large language models or LLMs.",[600,626,627],{},"The clearer the instructions we provide the LLM, the better and more aligned with our needs the output will be.",[600,629,630,631,635,636,643],{},"This process is called ",[632,633,634],"strong",{},"Prompt Engineering",", and this post will cover some of the basics of prompt engineering to help you get the answers you need from ",[637,638,642],"a",{"href":639,"rel":640},"https:\u002F\u002Fpieces.app\u002Fblog\u002Ftop-10-ai-tools-for-developers",[641],"nofollow","AI developer tools"," like Pieces.",[600,645,646],{},"Whether you're an LLM developer or just starting to explore AI applications, this prompt engineering tutorial will enhance your skills in AI prompt engineering.",[648,649,651],"h2",{"id":650},"what-is-prompt-engineering","What is prompt engineering?",[600,653,654],{},"Seeing as prompt engineering is related to LLMs, let’s ask an LLM to define prompt engineering:",[600,656,657],{},[658,659],"img",{"alt":660,"src":661},"","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fllm-prompt-engineering\u002Fimg-001.png",[600,663,664,665,670,671],{},"Using the Pieces Copilot, I asked ",[637,666,669],{"href":667,"rel":668},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fhow-to-use-gpt-4o-gemini-1-5-pro-and-claude-3-5-sonnet-free",[641],"Claude 3.5 Sonnet"," the following question: ",[672,673,674],"em",{},"“Give me a 100 word summary of prompt engineering aimed at a non-technical user of tools like ChatGPT”",[600,676,677],{},"And got the following answer:",[679,680,685],"pre",{"className":681,"code":683,"language":684},[682],"language-text","Prompt engineering is crafting effective instructions for AI systems like ChatGPT to \nget the best possible results. Think of it like learning to ask questions in a way that \nhelps someone understand exactly what you want. Instead of giving vague requests,\nyou learn to be specific, provide context, and break down complex asks into clearer parts.\nGood prompt engineering might include specifying the format you want the answer in, giving\nexamples, or setting boundaries for the response. It's similar to learning how to communicate\nclearly with a very literal-minded but capable assistant who wants to help but needs\nprecise instructions.\n","text",[686,687,683],"code",{"__ignoreMap":660},[600,689,690],{},"To summarize – prompt engineering is coming up with an effective question to ask the LLM so that you get the answer you need in the format you want. In this question, I not only asked for a summary of prompt engineering, but I specified the word limit and the target audience.",[600,692,693],{},"This ‘engineered’ a short, 103 word, response that was targeted towards a non-technical user. If I had asked for a longer summary aimed at a developer, the response would be different.",[600,695,696,697,702,703,708,709,712,713,716,717,720],{},"As an example for developers, if you ask an LLM to give you a class to represent a user, it will probably give you a class in a popular language like ",[637,698,701],{"href":699,"rel":700},"https:\u002F\u002Fpieces.app\u002Fcollections\u002Fpython",[641],"Python"," or ",[637,704,707],{"href":705,"rel":706},"https:\u002F\u002Fpieces.app\u002Fcollections\u002Fjavascript",[641],"JavaScript,"," with a wide range of fields. Not helpful if you want a User class in C# that just has ",[686,710,711],{},"Name",", ",[686,714,715],{},"Email",", and ",[686,718,719],{},"PhoneNumber"," fields.",[600,722,723],{},"To get a better response you need to specify the language and required fields.",[600,725,726],{},[658,727],{"alt":660,"src":728},"https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fllm-prompt-engineering\u002Fimg-002.png",[600,730,731],{},"Let’s now dig into what makes a good prompt, and some techniques for getting the most out of your conversations with an LLM.",[648,733,735],{"id":734},"what-are-the-components-of-a-good-llm-prompt","What are the components of a good LLM prompt?",[600,737,738,739,746,747,749],{},"The summary of prompt engineering by Claude mentioned above starts with “",[672,740,741,742,745],{},"Prompt engineering is the ",[632,743,744],{},"art"," of crafting effective instructions”."," The term ",[632,748,744],{}," is used, and whilst there is a certain amount of art to create prompts based on experience, it is more science than art. There are some components that make up an effective prompt.",[751,752,754],"h3",{"id":753},"context","Context",[600,756,757],{},"Context is the additional information that the LLM needs to understand your question beyond what it has already been trained on. By adding more context you can provide less information in the user question, and you can get a more relevant answer.",[600,759,760],{},"For a developer-focused AI tool, the context you need probably comes from existing files or folders of code – this is how you can ask questions about an existing project.",[600,762,763,764,769],{},"There are 2 ways to ",[637,765,768],{"href":766,"rel":767},"https:\u002F\u002Fdocs.pieces.app\u002Ffeatures\u002Fpieces-copilot#set-your-own-copilot-context",[641],"add context to your prompt",", either directly inside the chat or by leveraging the features of the tool you are using to pull in files or folders.",[600,771,772],{},"To add the context directly to the chat, you add the code inline:",[600,774,775],{},[658,776],{"alt":660,"src":777},"https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fllm-prompt-engineering\u002Fimg-003.png",[600,779,780],{},"In this example, I am asking the following question:",[679,782,785],{"className":783,"code":784,"language":684},[682],"With this C# code:\npublic class User\n{\n    public int UserId { get; set; }\n    public string Name { get; set; }\n    public string Email { get; set; }\n    public string PhoneNumber { get; set; }\n}\nMake the UserId and Name properties read-only and set in the constructor.\n",[686,786,784],{"__ignoreMap":660},[600,788,789],{},"This provides the code that the LLM needs. This is ideal for small snippets of code, but less easy to do when you are dealing with large blocks of code or even multiple files.",[600,791,792,793,798],{},"This is where a good AI developer tool helps, allowing you to set the context using individual files, or folders of code (or ",[637,794,797],{"href":795,"rel":796},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Flong-term-memory",[641],"even the Pieces Long-Term memory"," across everything you are doing on your developer machine). The more relevant context you have, the better the answer.",[600,800,801],{},"📌 The one consideration you need to have is that yes, the more relevant context you have, the better the answer, but equally the more irrelevant context you have, the worse the answer.",[600,803,804,805,810],{},"LLMs have a limited context window - the maximum size you can send to the LLM. If the ",[637,806,809],{"href":807,"rel":808},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fsmall-language-models-outshine-large-language-models-enterprise-users",[641],"context is too large",", the LLM won’t be able to process your prompt, and you will need to rely on your chat tool to strip down the context to just what is relevant.",[600,812,813],{},"You can narrow down the context, by using relevancy detection so that you can pass in a folder of code and have just the relevant context passed to the LLM, but you still guide this.",[600,815,816],{},"If you pass in multiple projects as context, the LLM is going to struggle to give you a good answer to a project-related question as it tries to find just the relevant context to pass to the LLM. It is better to have the smallest context that is relevant to the question you are asking.",[751,818,820],{"id":819},"user-question","User question",[600,822,823],{},"The user question is the core of what you want to ask the LLM.",[600,825,826],{},"For example, you can ask a question relying on the LLMs training data and any context added, or define a problem and ask for a solution. When you are planning the question, it is good to make it a single purpose, short, and specific.",[828,829,831],"h4",{"id":830},"single-purpose","Single purpose",[600,833,834],{},"Ask for a single thing. LLMs are great when given a single task to do, but don’t do so well when asked for multiple things at once. It will try, but the answer will contain a mixture of all the tasks so will lack detail.",[600,836,837],{},"💡You will get a better response by asking multiple questions, one per task.",[600,839,840],{},"As well as having a limited context window for the inputs to an LLM, they also have a smaller output context window — the more disparate topics that have to fit into the output window, the smaller the answer for each will be.",[600,842,843],{},"For example, if you want to comment on a class, and refactor another class, you would do these as 2 separate prompts, not one that combines both.",[828,845,847],{"id":846},"specific","Specific",[600,849,850,851,854],{},"Be specific with what you want from the LLM. If you are vague, the answer probably won’t align with your needs. ",[686,852,853],{},"“Give me a user class”"," will give you a class in whatever the LLM thinks is the most likely programming language.",[600,856,857,860,861,864,865,868],{},[686,858,859],{},"“Give me a user class in C#”"," will give you a class in C#, ",[686,862,863],{},"“Give me a user class in C# with UserId, Name, and PhoneNumber properties. Add equality operators, make the UserId read-only, and use a primary constructor”"," this will give you a very precise class definition with just the properties you need, equality, and a primary constructor that sets the read-only ",[686,866,867],{},"UserId",".",[828,870,872],{"id":871},"short","Short",[600,874,875],{},"LLMs work better with concise prompts. The clearer the instruction, the better the answer. Short, concise prompts reduce the chance of the LLM being misdirected by irrelevant information in the prompt.",[751,877,879],{"id":878},"output-guidance","Output guidance",[600,881,882],{},"LLMs are trained on a large amount of data, and can often come up with a good response with minimal guidance. Sometimes, however, the format of the response is not what you want.",[600,884,885],{},"In this case, the best way is to provide examples of the output that you want and pass these in the prompt as guidance.",[828,887,889],{"id":888},"zero-shot-prompting","Zero-shot prompting",[600,891,892],{},"Zero-shot prompting relies on the LLM to decide how to output the response based on how it’s been trained.",[600,894,895],{},"This is ideal for situations like generating code where the output will be formatted based on the huge range of code that the model is trained on.",[600,897,898,899,902,903,905],{},"For example, if you wanted to generate some unit tests for the ",[686,900,901],{},"User"," class mentioned earlier, you could add the ",[686,904,901],{}," class as context, and ask the LLM:",[679,907,910],{"className":908,"code":909,"language":684},[682],"Create a unit test class using xUnit for the User class.\n",[686,911,909],{"__ignoreMap":660},[600,913,914],{},"The output might not be exactly as you would write the code, but it will be good enough to get started.",[828,916,918],{"id":917},"few-shot-prompting","Few-shot prompting",[600,920,921],{},"Few-shot prompting is where you give the LLM a number of examples of how you want the output, and the LLM can use these to create the output in the format you want, interpolating ideas from the examples.",[600,923,924],{},"This is great for situations where you need a specific format for the output, such as generating data. As long as the examples have a consistent structure to them, the LLM can use these.",[679,926,929],{"className":927,"code":928,"language":684},[682],"Create some dummy data for the User class. I need 100 instances. Here are some examples:\n\nvar user1 = new User(1, “John Smith”){ Email=”john.smith@example.com”, PhoneNumber=”555-555-5555” };\nvar user2 = new User(2, “Barry Potter”){ Email=”barry.potter@example.com”, PhoneNumber=”555-555-5555” };\nvar user3 = new User(3, “Polly Darton”){ Email=”polly.darton@example.com”, PhoneNumber=”555-555-5555” };\n",[686,930,928],{"__ignoreMap":660},[600,932,933],{},"This is enough to guide the LLM to create rows with incrementing user Ids (1, 2, and so on up to 100), stored in variables with names that match the Id (user1, user2, and so on up to user100), with random names that are also used in the email addresses.",[600,935,936],{},[658,937],{"alt":660,"src":938},"https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fllm-prompt-engineering\u002Fimg-004.png",[648,940,942],{"id":941},"techniques-for-prompt-engineering","Techniques for prompt engineering",[600,944,945,946,951],{},"There are multiple techniques to consider to help you ",[637,947,950],{"href":948,"rel":949},"https:\u002F\u002Fpieces.app\u002Fblog\u002F10-prompt-engineering-best-practices",[641],"get the most out of the prompts"," you use with an LLM. Here are a couple of the more important ones.",[751,953,955],{"id":954},"prompt-chaining","Prompt chaining",[600,957,958,959,962,963,868],{},"Thinking back to our James Bond example from earlier, in Casino Royale after Bond orders the Vespa martini, another player at the table says ",[672,960,961],{},"“I’ll have one of these”",", with someone else following up with ",[672,964,965],{},"“So will I”",[600,967,968,969,972,973,976],{},"The waiter has the conversation history from Bond’s order to know that ",[672,970,971],{},"“I’ll have one of those”"," means that the player wants a Vespa, and ",[672,974,975],{},"“So will I\""," means the next player ordering wants the same as the previous order, which is also a Vespa.",[600,978,979,980,868],{},"This is the same in the conversations we have with ",[637,981,984],{"href":982,"rel":983},"https:\u002F\u002Fpieces.app\u002Fblog\u002Ftop-5-open-source-ai-chatbots-for-developers",[641],"AI chat tools",[600,986,987],{},"When we ask a question, that question, and the response become the context for the next question.",[600,989,990],{},"This allows us to iterate on a prompt by chaining together prompts and giving the LLM follow-up instructions to correct its answer.",[600,992,993,994,996,997,712,999,716,1001,720],{},"As a simple example, imagine you want a ",[686,995,901],{}," class in C# that just has ",[686,998,711],{},[686,1000,715],{},[686,1002,719],{},[600,1004,1005],{},"You can start by asking the LLM:",[679,1007,1010],{"className":1008,"code":1009,"language":684},[682],"Create a user class\n",[686,1011,1009],{"__ignoreMap":660},[600,1013,1014],{},"The answer might be something like:",[679,1016,1019],{"className":1017,"code":1018,"language":684},[682],"I'll create a basic User class with common attributes and methods. Here's an example in Python:\n\nclass User:\n    def __init__(self, username, email, password):\n        self.username = username\n        self.email = email\n        self._password = password  # using underscore to indicate this is \"private\"\n        self.is_active = True\n        self.created_at = datetime.datetime.now()\n",[686,1020,1018],{"__ignoreMap":660},[600,1022,1023],{},"Obviously this is in the wrong programming language. You can correct the LLM instead of asking a full new question:",[679,1025,1028],{"className":1026,"code":1027,"language":684},[682],"No, I want this in C#\n",[686,1029,1027],{"__ignoreMap":660},[600,1031,1032],{},"And this will give:",[679,1034,1037],{"className":1035,"code":1036,"language":684},[682],"I'll convert the User class to C#. Here's the equivalent implementation:\n\nusing System;\n\npublic class User\n{\n    public string Username { get; set; }\n    public string Email { get; set; }\n    private string _password;\n    public bool IsActive { get; set; }\n    public DateTime CreatedAt { get; private set; }\n\n    public User()\n    {\n        CreatedAt = DateTime.Now;\n    }\n}\n",[686,1038,1036],{"__ignoreMap":660},[600,1040,1041],{},"The follow-up prompt doesn’t restate the original question, instead relies on the conversation history to provide relevant context. You can then follow up again:",[679,1043,1046],{"className":1044,"code":1045,"language":684},[682],"This class only needs 3 fields, UserId, Name, and PhoneNumber\n",[686,1047,1045],{"__ignoreMap":660},[600,1049,1050],{},"And this gives",[679,1052,1055],{"className":1053,"code":1054,"language":684},[682],"I'll simplify the User class in C# to only include the three requested fields:\n\npublic class User\n{\n    public int UserId { get; set; }\n    public string Name { get; set; }\n    public string PhoneNumber { get; set; }\n}\n",[686,1056,1054],{"__ignoreMap":660},[600,1058,1059],{},"Now this is a very simple example, but it shows the point - you can rely on the conversation history to tell the LLM to ‘correct’ its previous response.",[600,1061,1062],{},"As you chain the prompts you will narrow down on the answer you need. You can also use prompt chaining to get additional information that is relevant to the conversation history.",[600,1064,1065,1066,1068,1069,1074],{},"For example, after asking for a ",[686,1067,901],{}," class, you can chain prompts to ask for code to save this to a database or ",[637,1070,1073],{"href":1071,"rel":1072},"https:\u002F\u002Fpieces.app\u002Fblog\u002Funit-testing-llms",[641],"add unit tests",", relying on the context of the previous answer that defined the class.",[751,1076,1078],{"id":1077},"single-vs-multiple-conversations","Single vs multiple conversations",[600,1080,1081],{},"You can have multiple concurrent conversations with the AI, so when do you re-use a conversation for your next prompt, and when do you create a new one?",[600,1083,1084],{},"The answer is, of course, it depends. With each separate conversation, you can have a separate chain of prompts.",[600,1086,1087],{},"I like to divide conversations by context – if there is nothing in the existing conversation that is a relevant context for my next question, then I start a new conversation.",[600,1089,1090],{},"If I have one conversation about Project A and need to ask a question about Project B then that is a new conversation. Any time I need to add context from a different project, that is a new conversation.",[600,1092,1093],{},"If I’m researching, then each topic is a new conversation. If I’m working on well-defined tasks such as Jira tickets or GitHub issues, then each task is a different conversation.",[600,1095,1096,1097,1100],{},"The upside to this is that it keeps each conversation focused. The downside is that I have a ",[672,1098,1099],{},"lot"," of conversations, so finding earlier discussions when task switching can be hard (top tip  – name your conversations with a relevant name, such as the Jira ticket number or project).",[600,1102,1103],{},"You also don’t want your conversations to be too long – as mentioned above LLMs have limits on the context window size, and under the hood, LLMs are actually stateless, so the conversation history is implemented by the AI tool, passing the history as context to each conversation.",[600,1105,1106],{},"If the history is too long, the chat tool will need to send just what it thinks is relevant from the history each time. The larger the history, the harder it is to ensure that all the relevant history is passed.",[600,1108,1109,1112,1113,1120,1112,1123,1112,1130],{},[672,1110,1111],{},"🍬 This stateless nature of LLMs is why tools like Pieces allow you to"," ",[637,1114,1117],{"href":1115,"rel":1116},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Fcopilot\u002Fmultiple-llms",[641],[672,1118,1119],{},"switch LLM mid-conversation",[672,1121,1122],{},". As the history needs to be passed each time, with Pieces you can start a conversation with Claude, then hop to Llama if you lose internet access (such as on a plane), and then",[637,1124,1127],{"href":1125,"rel":1126},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fhow-to-write-code-with-chatgpt",[641],[672,1128,1129],{},"back to ChatGPT",[672,1131,1132],{},"for a different set of answers.",[751,1134,1136],{"id":1135},"chain-of-thought-prompting","Chain-of-thought prompting",[600,1138,1139],{},"Chain of thought prompting involves providing the LLM with multi-step instructions to solve a problem, rather than asking for a single answer.",[600,1141,1142],{},"These steps align with the kind of steps a human would chain together to solve a problem. This is a very powerful way to get code created when you have some idea upfront of the algorithm you want to use, or if you need a specific output.",[679,1144,1147],{"className":1145,"code":1146,"language":684},[682],"Create a comprehensive set of unit tests for this C# class\n\npublic class User\n{\n    public int UserId { get; set; }\n    public string Name { get; set; }\n    public string PhoneNumber { get; set; }\n}\nThink step-by-step:\nIdentify key scenarios: What are the core functionalities of the User class that we need to test?\nWrite unit tests: For each scenario, write a unit test using the xUnit testing framework.\nConsider edge cases: What are the potential invalid inputs or unexpected behaviors that we should test?\n",[686,1148,1146],{"__ignoreMap":660},[600,1150,1151],{},"This prompt gives 3 defined instructions that guide the LLM.",[600,1153,1154],{},"First, it asks the LLM to consider the core functionality of the class to define what things need to be included in the tests.",[600,1156,1157],{},"Next, it asks the LLM to create the unit tests.",[600,1159,1160,1161,868],{},"Finally, it guides the LLM to consider edge cases. By giving these specific instructions to the LLM, the LLM will give a better answer than simply asking ",[672,1162,1163],{},"“Create unit tests for this class”",[600,1165,1166,1167],{},"💡",[632,1168,1169],{},"You can also try zero-shot chain-of-thought prompting, where you ask a question with the sentence “Let’s think step by step” at the end instead of providing a sequence of steps. This can be enough for the LLM to define the steps itself.",[648,1171,1173],{"id":1172},"working-with-llms","Working with LLMs",[600,1175,1176],{},"LLMs are like most tools – only as powerful as their user.",[600,1178,1179],{},"Give a carpenter a hammer and chisel and you will get a thing of beauty, give me a hammer and chisel and you'll get a ride to the emergency room to sew my finger back on.",[600,1181,1182,1183,1186],{},"To get the most out of an LLM you need to understand ",[672,1184,1185],{},"how"," to engineer a good prompt.",[600,1188,1189],{},"The trick is to add the right context, be clear and concise with your questions, and give guidance on the output that you want. This is the essence of prompt engineering software and tools.",[600,1191,1192],{},"If you then consider advanced techniques like prompt chaining, chain-of-thought prompting, and ensuring you structure your conversations in the best way you'll soon be crafting the prompts you need to get the answers you want.",[600,1194,1195],{},"As you continue to learn prompt engineering, you'll develop an intuition for effective prompt strategies that can be applied across various generative AI and natural language processing tasks.",[600,1197,1198],{},"📌 Remember, prompt engineering is an iterative process that requires creativity and open-mindedness.",[600,1200,1201],{},"As you practice these techniques, you'll become more proficient in leveraging LLMs for various AI applications, from question-answering systems to complex task completion scenarios.",[600,1203,1204],{},"Keep exploring, experimenting with different prompt templates, and refining your approach to unlock the full potential of AI prompt engineering.",{"title":660,"searchDepth":1206,"depth":1206,"links":1207},2,[1208,1209,1215,1220],{"id":650,"depth":1206,"text":651},{"id":734,"depth":1206,"text":735,"children":1210},[1211,1213,1214],{"id":753,"depth":1212,"text":754},3,{"id":819,"depth":1212,"text":820},{"id":878,"depth":1212,"text":879},{"id":941,"depth":1206,"text":942,"children":1216},[1217,1218,1219],{"id":954,"depth":1212,"text":955},{"id":1077,"depth":1212,"text":1078},{"id":1135,"depth":1212,"text":1136},{"id":1172,"depth":1206,"text":1173},"Try Pieces","https:\u002F\u002Fdocs.pieces.app\u002Finstallation-getting-started\u002Fwhat-am-i-installing","AI & LLM","2024-12-04T00:00:00.000Z","Master LLM prompt engineering with this step-by-step tutorial for developers. Learn techniques to craft effective prompts and optimize AI responses for better results.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fllm-prompt-engineering\u002Fhero.png",{},"\u002Fblog\u002Fllm-prompt-engineering",{"title":591,"description":1225},"blog\u002Fllm-prompt-engineering",[1234],"LLM Prompt Engineering","NdIv2rUkOPeBuEo8bWT3A9zy3PyvdJFNQYIyFrfiE-M",{"id":1237,"title":592,"body":1238,"description":1250,"draft":1226,"extension":1227,"meta":1251,"navigation":20,"path":1252,"photo":593,"photoAlt":594,"seo":1253,"stem":1254,"__hash__":1255},"authors\u002Fauthors\u002Fjim-bennett.md",{"type":597,"value":1239,"toc":1248},[1240,1245],[600,1241,1242,1244],{},[632,1243,592],{}," is the worlds most energetic developer advocate, and head of developer advocacy at Pieces for Developers, focusing on enabling developers to be more productive by leveraging contextual awareness of not only the code they write, but the content the read and the conversations they have. He’s British, so sounds way smarter than he actually is, and lives in the Pacific North West of the USA. In the past he’s lived in 4 continents working as a developer in the mobile, desktop, and scientific space. He's spoken at conferences and events all around the globe, organized meetup groups and communities, and written books on mobile development and IoT.",[600,1246,1247],{},"He also hates and is allergic to cats, but has a 12-year-old who loves cats, so he has 2 cats.",{"title":660,"searchDepth":1206,"depth":1206,"links":1249},[],"Jim Bennett is the worlds most energetic developer advocate, and head of developer advocacy at Pieces for Developers, focusing on enabling developers to be more productive by leveraging contextual awareness of not only the code they write, but the content the read and the conversations they have. He’s British, so sounds way smarter than he actually is, and lives in the Pacific North West of the USA. In the past he’s lived in 4 continents working as a developer in the mobile, desktop, and scientific space. He's spoken at conferences and events all around the globe, organized meetup groups and communities, and written books on mobile development and IoT.",{},"\u002Fauthors\u002Fjim-bennett",{"title":592,"description":1250},"authors\u002Fjim-bennett","YIFIluNBCDSlCBqUnZ0go6356wVKJ0JfunW_CZbXTcw"]