teleren/devto huggingface dataset:
Auto-completion co-pilot using Hugging Face LangChain and Phi3 SLM
Published: 2024-05-31 03:11:27

 


You can create your own coding auto-completion co-pilot using Hugging Face LangChain and Phi3 SLM! Here's a breakdown of the steps involved:

1. Setting Up the Environment:

Install the required libraries:
Bash
pip install langchain transformers datasets phi3
Download the Phi3 SLM model:
Bash
from transformers import AutoModelForSeq2SeqLM
model_name = "princeton-ml/ph3_base"
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
2. Preprocessing Code for LangChain:

LangChain provides a AutoTokenizer class to preprocess code. Identify the programming language you want to support and install the corresponding tokenizer from Hugging Face. For example, for Python:
Bash
from langchain.llms import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("openai/gpt-code-code")
Define a function to preprocess code into LangChain format. This might involve splitting the code into tokens, adding special tokens (e.g., start/end of code), and handling context (previous lines of code).
3. Integrating Phi3 SLM with LangChain:

LangChain allows creating custom prompts and completions. Leverage this to integrate Phi3 SLM for code completion suggestions.

Here's a basic outline:
Python
`def generate_completion(code_input):
    # Preprocess code using tokenizer
    input_ids = tokenizer(code_input, return_tensors="pt")

    # Define LangChain prompt (e.g., "Write the next line of code: ")
    prompt = f"{prompt} {code_input}"
    prompt_ids = tokenizer(prompt, return_tensors="pt")

    # Generate outputs from Phi3 SLM using LangChain
    outputs = langchain.llms.TextLMRunner(model)(prompt_ids)
    generated_code = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]

    return generated_code`
4. Training and Fine-tuning (Optional):

While Phi3 SLM is a powerful model, you can further enhance its performance for specific coding tasks by fine-tuning on a dataset of code and completions. This might involve creating a custom training loop using LangChain's functionalities.
5. User Interface and Deployment:

Develop a user interface (UI) to accept code input from the user and display the generated completions from your co-pilot. This could be a web application or a plugin for an existing code editor.
Explore cloud platforms or containerization tools (e.g., Docker) to deploy your co-pilot as a service.
Additional Tips:

Refer to LangChain's documentation for detailed examples and usage guides: https://python.langchain.com/v0.1/docs/integrations/platforms/huggingface/
Explore Hugging Face's model hub for various code-specific pre-trained models that you can integrate with LangChain: https://huggingface.co/models
Consider incorporating error handling and edge cases in your code to make the co-pilot more robust.
Remember, this is a high-level overview, and you'll need to adapt and implement the code based on your specific requirements and chosen programming language.
Mmoexp: Path of Exile's newest Delirium league contains plenty of content for RPG fans
Tags: webdev, javascript, beginners, programming
Published: 2024-05-31 03:09:59

The developers have also released a video of a presentation made by <a href="https://www.mmoexp.com/Path-of-exile/Currency.html">Path of exile currency</a> their senior programmer Alexander Sannikov in 2019. In the video on Youtube he discusses the technology behind the gameâ€™s renderings and improvements made for Path Of Exile 2.

.hidden-poll {display: none} Path Of Exile: 5 Reasons Why Delirium League Is Great (& 5 It's Bad) Path Of Exile: 5 Reasons Why Delirium League Is Great (& 5 It's Bad) By Charles Burgar Published Apr 2, 2020
Not a lot has changed, but itâ€™s currently a fun league with great microtransactions and a lot of hype for POE 2.

NEXT: Path Of Exile: 5 Reasons Why Delirium League Is Great (& 5 Itâ€™s Bad)

Path of Exile's newest Delirium league contains plenty of content for RPG fans, but it has its pros and cons.

Path of Exile's newest Delirium league contains plenty of content for RPG fans to chew through. Whether you are pushing hard Maps with this league's Delirious fog or crafting Cluster Jewel passives for your build, this league has something for <a href="https://www.mmoexp.com/Path-of-exile/Currency.html">buy POE currency</a> every type of player.
Fortuna Tiger: slot online, mergulhe no mundo da sorte e da emoção
Published: 2024-05-31 03:07:24

No mundo dos jogos de azar online, existem muitos jogos emocionantes que fazem seu coração bater mais rápido e sua respiração ficar mais lenta de excitação. Porém, entre todos esses jogos, há um que se destaca pelo seu charme único e atmosfera emocionante - Fortuna Tiger. Você deve [clicar na ligação](https://fortunatiger.org/). Neste artigo veremos o que torna este slot online tão único e emocionante.

**O fascinante mundo da Fortuna**
Fortuna Tiger não é apenas uma máquina caça-níqueis, é todo um mundo de aventuras e oportunidades emocionantes. Assim que você inicia este jogo, você fica imerso na emocionante atmosfera da China antiga, onde cada símbolo e som o transporta para o mundo da sorte e da riqueza.

**Ótimo design e gráficos**
Um dos aspectos mais impressionantes do Fortuna Tiger é seu design impressionante e gráficos de qualidade. Cada elemento do jogo é trabalhado nos mínimos detalhes, desde símbolos coloridos até animações emocionantes. Isso cria uma atmosfera única e torna a jogabilidade ainda mais emocionante.

**Recursos de bônus exclusivos**
Fortuna Tiger não oferece apenas um jogo de azar, mas também oferece muitos bônus interessantes que tornam a experiência de jogo ainda mais emocionante. Desde rodadas grátis até multiplicadores de ganhos, há algo para todos.

**Jogue em dispositivos móveis**
O mundo moderno exige acessibilidade e comodidade, por isso o Fortuna Tiger está disponível não só em computadores, mas também em dispositivos móveis. Isso significa que você pode aproveitar o jogo a qualquer hora e em qualquer lugar, sem estar limitado por tempo e lugar.

**Conclusão**
Fortuna Tiger não é apenas um jogo, é uma imersão em um mundo de sorte e emoção, onde cada rolo giratório pode trazer ganhos incríveis. Do design cativante aos emocionantes recursos de bônus, este jogo promete ser seu parceiro em suas aventuras no caminho para a riqueza. Faça uma viagem com Fortuna Tiger hoje e sinta a magia da sorte!
Glam Up My Markup: Beaches
Tags: devchallenge, frontendchallenge, css, javascript
Published: 2024-05-31 02:54:12

_This is a submission for [Frontend Challenge v24.04.17]((https://dev.to/challenges/frontend-2024-05-29), Glam Up My Markup: Beaches_

## What I Built

This is my first time doing challenge, so in this challenge i built a list of card for the beaches in the template that provided. I try not editing the HTML and make it pure CSS and JavaScript. I would challenge myself to do it with basic, without frameworks and libraries. I want to learn the basic and re-memorized the fundamental of CSS and also JavaScript DOM.

## Demo

![This is the preview, it's so simple since but I learn a lot from this](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bavrfplvj4h9d5llpnqs.png)

You guys can see the code in here : [Repo](https://github.com/altafsyah/dev.to-beach)
Visit the live preview in [here](https://dev-to-beach.vercel.app/)

## Journey

In this challenge, I'm editing the HTML using JavaScript DOM to insert element and adding styles into it. Since the template doesn't included with phots. I challenge myself to make the visual design using SVG path. It's really challenging, but I learn a lot from this. 

I re-learn about the fundamental of Javascript, CSS Flexbox, and using path in SVG to draw. It's worth the time, maybe I would make this website as my experiment for SVG path and animation, since I found out it's really fun to do.

I'm looking forward for the next challenges.
Next.js: Simple Example using revalidateTag
Tags: nextjs, beginners, typescript, tutorial
Published: 2024-05-31 02:52:02

In Next.js, [revalidating data](https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#revalidating-data) is the process of clearing the Data Cache and retrieving the latest data. This allows you to display the latest information to your users as your data changes. 

There are two types of revalidation:
- Time-Base
- On-demand - `revalidatePath` and `revalidateTag`

In this post, we'll focus on On-demand revalidation `revalidateTag`, which manually revalidates data based on an event such as a form submission. This can only called in a Server Action or Router Handler. 

Next.js has a cache tagging system for invalidating `fetch` requests across routes. In order to use `revalidateTag`, you'll need to add a tag in the `fetch` request:
```TS
const res = await fetch('https://baseurl.com', { next: { tags: ['mytag'] } });
```
This adds the cache tag `mytag` to the `fetch` request.

Then you can revalidate the `fetch` call by calling `revalidateTag` in a Server Action:
```TS
'use server'
 
import { revalidateTag } from 'next/cache'
 
export default async function action() {
  revalidateTag('mytag')
}
```

Basic Next.js 14 example with Typescript can be found here: https://github.com/juhlmann75/Next.js-Examples/tree/main/src/app/examples/revalidateTag

More on how [On-demand revalidation works](https://nextjs.org/docs/app/building-your-application/caching#on-demand-revalidation).
Estudo do KTO Casino: Novo Horizonte de Jogos Virtuais
Published: 2024-05-31 02:47:15

Desde o advento dos casinos online no mundo do entretenimento online, os jogadores têm procurado sites confiáveis ​​que ofereçam jogos emocionantes, bónus generosos e um ambiente de jogo seguro. Neste contexto, o KTO Casino representa um fenômeno interessante. Vejamos [aqui](https://mixjogos.com.br/cassino/kto/) o que torna esta plataforma única e se vale a pena investir seu dinheiro e tempo nos jogos oferecidos por esta operadora.

**Plataforma de jogos**

O KTO Casino oferece uma ampla variedade de jogos, incluindo slots, jogos de mesa, jogos com crupiê ao vivo e muito mais. A colaboração com os principais desenvolvedores de software, como NetEnt, Microgaming e Evolution Gaming, garante conteúdo de jogos de alta qualidade. Os usuários podem desfrutar de slots emocionantes com uma variedade de temas, bem como jogos de mesa clássicos como blackjack, roleta e pôquer.

**Bônus e Promoções**

Um dos principais aspectos para atrair jogadores para cassinos online são os bônus e promoções. O KTO Casino oferece uma variedade de ofertas de bônus, incluindo bônus de boas-vindas para novos jogadores, rodadas grátis em slots, cashback e muito mais. Os bônus podem aumentar significativamente o saldo do jogo e melhorar suas chances de ganhar.

**Segurança e Confiabilidade**

Um dos aspectos mais importantes na escolha de um casino online é a segurança. O KTO Casino oferece um alto nível de proteção para os dados pessoais e transações financeiras dos jogadores usando modernas tecnologias de criptografia. Uma licença emitida pelas autoridades competentes garante a conformidade com os padrões da indústria de jogos e a justiça do processo de jogo.

**Suporte ao usuário**

Um bom suporte ao cliente desempenha um papel importante na experiência do jogador no cassino online. O KTO Casino oferece suporte 24 horas por dia, 7 dias por semana, via chat ao vivo, e-mail e telefone. A equipe profissional está pronta para ajudar os jogadores com quaisquer dúvidas ou problemas que surjam durante o jogo.

**Cassino Móvel**

Com a crescente popularidade dos dispositivos móveis, muitos jogadores preferem jogar jogos de casino nos seus smartphones ou tablets. O KTO Casino oferece uma plataforma móvel compatível com vários sistemas operacionais, permitindo aos jogadores desfrutar de jogos a qualquer hora e em qualquer lugar.

**Conclusão**

KTO Casino é uma plataforma que combina uma ampla seleção de jogos, bônus generosos, alto nível de segurança e atendimento de qualidade. Para quem procura uma experiência emocionante de jogo de cassino em um ambiente seguro, o KTO Casino pode ser uma ótima escolha. No entanto, os jogadores devem sempre lembrar-se de jogar com responsabilidade e gerir as suas finanças.
Azure - Building Multimodal Generative Experiences. Part 2
Tags: azure, ai, openai, information
Published: 2024-05-31 02:14:17

Previous Post [Link](https://dev.to/manjunani/azure-building-multimodal-generative-experiences-part-1-j5o)

## Create a composed Document Intelligence Model
- Composed models in Azure AI document intelligence enable users to submit a form when they don't know which is the best model to use.
- Composed Models
  - when you have forms with unusual or unique formats, you can create and train your own custom models in Azure AI Document Intelligence.
  - You can create custom model of 2 types (custom template model and custom neural models) refer to previous post to know more about them.
  - Once you have created a set of custom models, you must assemble them into a composed model. you can do this on the Azure AI Studio.
  - Custom model Compatibility
    - Custom template models are responsible with other custom template models across 3.0 and 2.1 API versions
    - Custom neural models are composable with other custom neural models.
    - Custom neural models can't be composed with custom template models.
    - [Custom models](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/concept-composed-models)

## Build a document intelligence custom skill for azure search.
- If you integrate AI Search with an Azure AI Document intelligence solution, you can enrich your index with fields that your Azure AI Document Intelligence models are trained to extract.
- Azure AI Search is a search service hosted in Azure that can index content on your permises or in a cloud location.
- There are 5 stages in Indexing process
  - Document Cracking. In document cracking, the indexer opens the content files and extracts their content.
  - Field Mappings. Fields such as titles, names, dates, and more are extracted from the content. You can use field mappings to control how they're stored in the index.
  - Skillset Execution. In the optional skillset execution stage, custom AI processing is done on the content to enrich the final index.
  - Output field mappings. If you're using a custom skillset, its output is mapped to index fields in this stage.
  - Push to index. The results of the indexing process are stored in the index in Azure AI Search.

- AI Search Skillset
  - Key Phrase extraction
  - Language Detection
  - Merge
  - Sentiment
  - Translation
  - Image Analysis
  - Optical character recognition

- we can use custom skills too and they can be used for 2 reasons
- The list of built-in skills doesn't include the type of AI Enrichment you need.
- you want to train your own model to analyze the data
- 2 types of custom skills that you can create
  - Azure Machine Learning Custom Skills
  - Custom Web API Skills
Refer to this [link](https://learn.microsoft.com/en-in/training/modules/build-form-recognizer-custom-skill-for-azure-cognitive-search/3-build-custom-skill) for building an Azure AI Document Intelligence Custom Skill
First Glance at Ansible
Tags: ansible
Published: 2024-05-31 02:03:37

What is ansible

Ansible is an open-source IT automation tool that automates provisioning, configuration management, application deployment, orchestration, and many other IT processes. Ansible is written in Python and uses OpenSSH for transport.

Hands-on Ansible

1. Install ansible on a Linux machine, which is called control node. Use "ssh-keygen" and "ssh-copy-id"commands to generate ssh key and copy it to managed nodes for authentication
2. Playbooks are the simplest way in Ansible to automate repeating tasks in the form of reusable and consistent configuration files. Playbooks are scripts defined in YAML files and contain any ordered set of steps to be executed on managed nodes.

[My first playbook]
- hosts: webserver
  remote_user: whocare

  tasks:
  - name: make ~/whocare directory
    ansible.builtin.file:
      path: ~/whocare
      state: directory

  - name: Copy file 
    copy:
     src: /home/whocare.deb
     dest: /home/whocare.deb
     owner: whocare
     group: whocare
     mode: '0700'

  - name: install whocare
    become: true
    become_method: sudo
    ansible.builtin.apt:
      deb: /home/whocare.deb

  - name: copy dat file to /opt/Tanium/TaniumClient
    become: true
    become_method: sudo # need "-K" parameter, which is short form "--ask-become-pass". $ ansible-playbook <1.yaml> -K. 
    copy:
      src: /home/whocare.dat
      dest: /opt/whocare.dat

  - name: restart service
      become: true
      become_method: sudo
      service:
        name: whocare
        state: restarted
How to host your Next14 app on Netlify in 2 minutes
Tags: netlify, nextjs, webdev, howto
Published: 2024-05-31 02:03:09

To follow this tutorial, you need to create a Netlify account and sign in to it, also the code for your Next app should be hosted on an online repository. I’m using GitHub to host the code.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbdxoj4a7fzp0me8d0f1.jpg) 

---


## **Add a new site🔗:**
You will be taken to your Netlify dashboard after you log in. After you click on the add new site button. It will bring up a popup menu, choose the 'import an existing project' option.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/grk9r1syyz4t2nzul89j.jpg)

---


## **Choose your code repository platform👨‍💻:**
Click on the platform of your choice and grant Netlify access to it. I'll choose GitHub because I'm using it to host my code.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zzx9e1okw05q7q0x0vc2.jpg)

---

## **Pick the repository of your Next.js app👩🏻‍💻:**
After choosing a platform, Netlify will show you a list of repositories hosted on your platform. Pick the repository that contains the Next14 app.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qckz9hfz9ie471cw1oqp.jpg)

---

## **Choose the correct branch & build settings⚙️:**
Netlify automatically infers if you're using Next.js, the build settings will allow your app to run normally, but you'll also be able to customize your site name, build command, the base directory, and your publish directory here. This is where you can also add your environment variables. If you're using a different branch other than the default main branch, you can switch to it with the select menu. Once you're done, click on deploy 'site name' at the bottom.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtsw66s66oy45l88tw2p.jpg)

---


## **You Next14 app is now live⚡**
Your site is live! If there were no build errors, all you have to do is wait for Netlify to deploy your site. Once it's done deploying, it'll provide a domain name for you that you can use to visit your site. You might need to reload the page if you're being shown 'site in progress' for a long time.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1k42vhwg6nnfjrbfkow.jpg)

---



Happy Coding! 
You can hear more from me on:
𝕏 - https://x.com/code_withjoseph
Python 熱門套件的前 10 名
Tags: beginners, programming, tutorial, python
Published: 2024-05-31 01:50:40

本篇我將會介紹 Python 熱門套件的前 10 名，下面表格是收集到的數據：
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7w023d7twow1n9s47cmp.png)

頭兩個 boto3 和 botocore 都是與亞馬遜的雲端服務平台 AWS 相關的套件，允許用戶與其上的服務進行互動。

然而，我並不建議新手們在初期就學習這類套件，其中一個原因是雲端技術相對複雜。Python 新手們常犯的錯誤就是一次接觸兩種（或以上）的技術，最終只會得到邯鄲學步的結果。

接下來的 urllib3 和 requests 是進行網頁抓取或透過 HTTP API（一種呼叫另一台機器上的程式/函式的方法）與其他機器互動的理想選擇。

不過別被 urllib3 的說明誤導了，雖然號稱 user-friendly，但在 requests 誕生之前我也被它苦毒許久⋯⋯艱澀難懂，有點像是以前大學時寫網路 socket 程式般的難受。因此我建議直接從 requests 下手即可。

其他包括 wheel，一個打包 Python 套件的工具；certifi，用於驗證 SSL 憑證和 TLS 主機；typing-extensions，處理 Python 型別；idna，用於處理 IDNA 網路通訊協定；setuptools 也是與套件打包有關；以及 charset-normalizer，用於偵測和轉換字元編碼。

這些套件涉及較專業的技術細節，對初學者來說可能較難直接應用，因此可以先將心思放在更重要的套件上面，比如說 requests。

從這樣的介紹中，你可能已經注意到，雖然 Python 有超過 50 萬個套件，我們日常實際會用到的只是其中的一小部分。而且如果根據領域再進行細分，實際需要學習的套件數量就更少了。這樣一想，學習 Python 套件是不是似乎沒有想象中那麼困難了呢？
把 ChatGPT 當成程式助手可能反倒讓你陷入困境
Tags: beginners, programming, tutorial, python
Published: 2024-05-31 01:49:40

我能理解為何你會相信它是一個助手，因為連我自己一開始也是這麼被「教育」的。現今的媒體和 YouTuber 們都是這樣在誇讚這些新興的 AI 工具，宣稱它們無所不能，甚至預言許多工作（尤其是我們程式設計師的職位）將被取代。

但我想先請你回想一下與它互動時的情形。你是否每次都必須費盡心思拼湊出那些 AI 專家們反覆強調的「詠唱咒語」，希望能像施展魔法一般，神奇地憑空變出完美的成品？

如果它真如主流所言無所不能，且已推出超過一年，那理應能直接理解你的需求，無需所謂的「咒語」。當 Google、YouTube 和 Facebook 能如讀心術般預測你的需求，精準投放廣告時，為何ChatGPT卻做不到？

此外，在 ChatGPT 初期，不少網紅專家曾浮誇的說它能迅速讓任何零基礎的人學會任何技能。那為何你現在還是個一直卡關的 Python 新手？

那麼，要如何看待 ChatGPT 所扮演的角色？又要怎樣正確地與之互動？讓我用上週的一個例子來說明它的真正角色。

當我在研究如何獲得熱門 Python 套件的下載量時，我利用 ChatGPT 來理解 BigQuery 的文件，並幫我生成一條可以在 PyPI 資料庫查詢相關資訊的 SQL 指令。

執行它的第一條指令時，我無腦的複製貼上，然後就直接遇到了錯誤，原因是它沒有正確理解 PyPI 資料庫表格的格式，導致欄位名稱錯誤。儘管它辨識出了表格中的兩個關鍵欄位，但不知為何在日期欄位上出了錯。

我指出了它的錯誤，經過幾次修正後，最終得到了正確的查詢結果。這讓我意識到，我的角色更像是「主管」，而它則像是「員工」。我負責指揮它的動作，並在它犯錯或未達預期時進行糾正。透過彼此長處的互補，本來需要數天完成的工作，在不到兩小時內便完美完成。這就是我們應該與這類 AI 工具應有的互動與合作方式。

現在你知道了新的思維方式來看待這些 AI 工具，你還會像以前一樣把它當成「助手」，卻過度依賴它，反倒失去了自我思考的能力嗎？還是你會調整自己的角色，以「領導者」的身份來引導和合作？

歡迎在下方分享你的感想和體悟！
如何取得 PyPI 上所有註冊的套件
Tags: beginners, programming, tutorial, python
Published: 2024-05-31 01:48:34

根據 PEP 503 (Simple Repository API) 文件裡的說明，我們可以透過 https://pypi.org/simple/ 這支 API 來取得所有登記在 PyPI 之下的 Python 套件。當我們向這個 API 發出請求後， 便可得到類似下面的回應：

```
<!DOCTYPE html>
<html>
  <body>
    <a href="/frob/">frob</a>
    <a href="/spamspamspam/">spamspamspam</a>
  </body>
</html>
```

這是一個 HTML 網頁的寫法，其中 href 之後的文字，例如 /frob/ 或 /spamspamspam/，顯示了該套件的詳細資訊所在的位置，中間的字串是該套件的標準化名稱；而在角括弧中間的文字，例如 frob 或 spamspamspam，則是套件的原始名稱。

因此我們就可以寫一支簡單的 shell script 來取得這份 HTML 的內容：
```
$ curl -s https://pypi.org/simple/
<!DOCTYPE html>
<html>
  <head>
    <meta name="pypi:repository-version" content="1.1">
    <title>Simple index</title>
  </head>
  <body>
<a href="/simple/0/">0</a>
<a href="/simple/0-0/">0-._.-._.-._.-._.-._.-._.-0</a>
<a href="/simple/000/">000</a>
…
```

為了更有效地篩選資訊，我們增加過濾條件，只保留含有 href 的項目：
```
$ curl -s https://pypi.org/simple/ | grep -Eo 'href="[^"]+"'
href="/simple/0/"
href="/simple/0-0/"
href="/simple/000/"
href="/simple/00000/"
href="/simple/0000000/"
href="/simple/00000000/"
href="/simple/000000000000000000000000000000000000000000000000000000000/"
href="/simple/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"
href="/simple/0-0-1/"
href="/simple/00101s/"
…
```

接著，我們移除 href、simple 以及其他符號，只留下標準化名稱：
```
$ curl -s https://pypi.org/simple/ | grep -Eo 'href="[^"]+"' | awk -F '/' '{print $3}'
0
0-0
000
00000
0000000
00000000
000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0-0-1
00101s
```

這樣我們便能取得所有在 PyPI 上登記的套件。

為了確認我們拿到的列表準確無誤，再進行一道處理程序：
```
$ curl -s https://pypi.org/simple/ | grep -Eo 'href="[^"]+"' | awk -F '/' '{print $3}' | wc -l
  534413
```

這數字與 PyPI 官網上的非常接近，大工告成！