在大語言模型 (LLM) 的世界中,溫度引數如同掌控創造力與精準度的指揮棒。將溫度設定為 0,猶如賦予 GPT-3 冷靜的思考力,使其專注於生成最可預測的文字。我發現這種策略在特定應用中非常有效,例如知識函式庫問答、客服機器人以及程式碼生成。

精準問答:GPT-3 零溫策略的優勢

當使用者提問時,我們期待 LLM 提供精準的答案,而非天馬行空的創意發揮。設定溫度為 0,能引導 GPT-3 選擇機率最高的詞彙,有效避免模稜兩可或不相關的資訊。

客服機器人需要提供一致與可靠的回覆,溫度設定為 0 正好能滿足這項需求。它確保機器人的回答符合預期,避免產生誤導或混淆。

在程式碼生成任務中,精準度至關重要。溫度為 0 的 GPT-3 能生成語法正確與功能明確的程式碼,降低錯誤風險。

Python 實戰:LangChain 與 GPT-3 的完美結合

以下程式碼示範如何使用 LangChain 與 GPT-3,並將溫度設定為 0 來開發精準問答系統:

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import DeepLake
from langchain.text_splitter import CharacterTextSplitter
from langchain import OpenAI, PromptTemplate
from langchain.document_loaders import SeleniumURLLoader

# 設定資料來源
urls = ['<您的 URL 1>', '<您的 URL 2>']

# 使用 Selenium 載入網頁內容
loader = SeleniumURLLoader(urls=urls)
documents = loader.load()

# 將檔案分割成更小的區塊
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 設定 OpenAI embeddings
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")

# 建立 Deep Lake 資料集
my_activeloop_org_id = "您的使用者名稱"
my_activeloop_dataset_name = "customer_support"
dataset_path = f"hub://{my_activeloop_org_id}/{my_activeloop_dataset_name}"
db = DeepLake(dataset_path=dataset_path, embedding=embeddings)

# 將檔案增加到 Deep Lake 資料集
db.add_documents(docs)

# 定義 Prompt 範本
template = """您是一位經驗豐富的客服聊天機器人,以全面的方式回答問題。
您知道以下背景資訊。
{chunks_formatted}
請根據上述背景資訊回答使用者的以下問題。請勿加入創造性內容。
問題:{query}
回答:"""
prompt = PromptTemplate(
    input_variables=["chunks_formatted", "query"],
    template=template,
)

# 使用者問題
query = "您的問題?"

# 搜尋相關資料
docs = db.similarity_search(query)
retrieved_chunks = [doc.page_content for doc in docs]

# 格式化 Prompt
chunks_formatted = "\n\n".join(retrieved_chunks)
prompt_formatted = prompt.format(chunks_formatted=chunks_formatted, query=query)

# 使用 GPT-3 生成答案,溫度設定為 0
llm = OpenAI(model="gpt-3.5-turbo-instruct", temperature=0)
answer = llm(prompt_formatted)
print(answer)

這段程式碼的核心在於利用 LangChain 構建一個以 GPT-3 為基礎的問答系統。它首先從指定 URL 載入網頁內容,並將其分割成小區塊。接著,利用 OpenAI embeddings 生成向量表示,並將資料儲存至 Deep Lake 資料集。透過精心設計的 Prompt 範本,引導 GPT-3 生成準確答案。temperature=0 的設定確保輸出結果的可預測性,非常適合對準確性要求高的應用場景。

  graph LR
    B[B]
    F[F]
    A[載入網頁內容] --> B{分割檔案};
    B --> C[生成 Embeddings];
    C --> D[儲存至 Deep Lake];
    E[使用者提問] --> F{搜尋相關資料};
    F --> G[格式化 Prompt];
    G --> H[GPT-3 生成答案];
    H --> I[輸出答案];

上圖簡潔地展示了程式碼的執行流程,從網頁內容載入到最終答案生成,清晰地呈現了每個步驟的邏輯關係。

零溫策略的優勢在於其可預測性和一致性,但在需要創造性輸出的場景中,例如寫作或詩歌創作,則需調整溫度設定。選擇合適的溫度引數需要根據具體應用場景進行權衡。

LangChain 的出現,讓 LLM 的應用開發更加便捷。它如同橋樑,連線 LLM 與外部世界,開啟了 NLP 應用程式開發的新篇章。從模型互動到資料連線,從鏈式組合到代理執行,LangChain 提供了全方位的支援。

LangChain 的應用案例涵蓋了客服聊天機器人、程式碼輔助工具、醫療保健應用程式等眾多領域,展現了其廣闊的應用前景。

以下是一個使用 LangChain 構建文章摘要器的例項:

import requests
from newspaper import Article
from langchain.llms import OpenAI

# 設定 OpenAI API Key
# ...

def summarize_article(url):
    article = Article(url)
    article.download()
    article.parse()

    llm = OpenAI(temperature=0.7)
    summary = llm.predict(f"請總結以下文章:\n\n{article.text}")

    return article.title, summary

# 測試
url = "https://www.example.com/article"  # 替換為實際文章 URL
title, summary = summarize_article(url)
print(f"標題:{title}")
print(f"摘要:{summary}")

這段程式碼示範瞭如何使用 LangChain 和 newspaper3k 套件提取文章內容,並利用 OpenAI 的 LLM 生成摘要。它首先下載並解析文章,然後將文章文字送入 LLM 進行摘要,最後輸出文章標題和生成的摘要。

透過 LangChain,我們可以更有效地利用 LLM 的強大功能,構建更具智慧的應用程式。

掌握溫度引數的運用,選擇合適的 LLM 和工具,是構建高效能 NLP 應用程式的關鍵。LangChain 的出現,為開發者提供了一個強大的工具,簡化了開發流程,讓 LLM 的應用開發變得更加便捷和高效。

在資料科學的浪潮中,網頁資料擷取和分析至關重要。本文將探討如何使用 Python 的 requestsnewspaper3k 函式庫,有效地擷取網頁資料並進行分析。我將分享一些實戰技巧和案例,讓你輕鬆掌握網頁資料擷取的精髓。

使用 Requests 函式庫擷取網頁內容

requests 函式庫是 Python 中一個強大的 HTTP 函式庫,簡化了網頁資料擷取的過程。以下是一個使用 requests 擷取網頁內容的範例:

import requests

url = "https://www.example.com"  # 將 example.com 替換為目標網址
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}

try:
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()  # 檢查 HTTP 狀態碼是否為 200
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"網頁擷取錯誤: {e}")

這段程式碼首先匯入 requests 函式庫,設定目標網址和使用者代理(User-Agent),用於模擬瀏覽器行為,避免被網站封鎖。try-except 區塊用於處理可能發生的網路錯誤。response.raise_for_status() 會在 HTTP 狀態碼非 200 時丟擲例外,確保只處理成功的請求。

使用 Newspaper3k 函式庫解析網頁文章

newspaper3k 函式庫建構於 requests 之上,專門用於解析新聞文章,自動提取文章標題、內容、作者等資訊。

from newspaper import Article

url = "https://www.example.com/news_article"  # 將此處替換為新聞文章網址

try:
    article = Article(url)
    article.download()
    article.parse()
    print(f"標題: {article.title}")
    print(f"內容: {article.text}")
except Exception as e:
    print(f"文章解析錯誤: {e}")

這段程式碼匯入 Article 類別,建立一個 Article 物件,傳入文章網址。article.download() 下載網頁內容,article.parse() 解析網頁並提取資訊。最後,印出文章的標題和內容。

更有效率地整合 Requests 和 Newspaper3k

結合 requestsnewspaper3k 可以更有效地處理網頁資料。

import requests
from newspaper import Article

url = "https://www.example.com/news_article"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}

session = requests.Session() # 建立 session 物件

try:
    response = session.get(url, headers=headers, timeout=10)
    response.raise_for_status()

    article = Article(url)
    article.download(input_html=response.text) # 使用已下載的 HTML 內容
    article.parse()
    print(f"標題: {article.title}")
    print(f"內容: {article.text}")

except Exception as e:
    print(f"錯誤: {e}")

此程式碼整合了 requestsnewspaper3k,並使用 session 維持連線,提升效率。將 requests 擷取的 HTML 內容直接傳遞給 newspaper3k,避免重複下載。

透過以上技巧,你可以更有效率地使用 Python 進行網頁資料擷取和分析。後續的文章將探討如何使用 Hugging Face 的 transformers 函式庫進一步分析擷取的文字內容。

  graph LR
    A[傳送請求 requests] --> B{檢查狀態}
    B -- 成功 --> C[解析文章 newspaper3k]
    C --> D[提取資訊]
    B -- 失敗 --> E[錯誤處理]

這篇文章示範瞭如何使用 Python 的 requestsnewspaper3k 函式庫進行網頁資料擷取和分析,並提供了一些實戰技巧。希望這些資訊能幫助你更好地運用 Python 處理網頁資料。

服飾影像語義分割技術解析:根據Hugging Face預訓練模型

在電腦視覺中,影像語義分割是一項關鍵技術,它能將影像中的每個畫素分類別至特定類別,例如將服飾從背景中區分出來。我曾參與一個需要精確識別服裝影像各個部分的專案,這讓我深入研究了影像語義分割的技術和模型。以下分享如何使用 Hugging Face 平台上的預訓練模型實作服飾影像的語義分割。

  graph LR
    B[B]
    D[D]
    A[取得影像] --> B{預處理影像};
    B --> C[模型推論];
    C --> D{升取樣 logits};
    D --> E[提取分割遮罩];
    E --> F[顯示分割遮罩];

安裝套件與匯入模組

首先,安裝必要的 Python 套件:

pip install torch
pip install --upgrade huggingface_hub
pip install torch accelerate torchaudio datasets
pip install --upgrade transformers
pip install git+https://github.com/huggingface/transformers.git
pip install pillow
pip install matplotlib

安裝完成後,匯入必要的模組:

from transformers import SegformerImageProcessor, AutoModelForSemanticSegmentation
from PIL import Image
import requests
import matplotlib.pyplot as plt
import torch.nn as nn
from huggingface_hub import login

登入 Hugging Face

login()

初始化影像處理器和模型

processor = SegformerImageProcessor.from_pretrained("mattmdjaga/segformer_b2_clothes")
model = AutoModelForSemanticSegmentation.from_pretrained("mattmdjaga/segformer_b2_clothes")

SegformerImageProcessor 將輸入影像轉換為模型可接受的格式,AutoModelForSemanticSegmentation 執行語義分割。from_pretrained 從 Hugging Face 下載預訓練模型。

取得和預處理影像

url = "https://www.telegraph.co.uk/content/dam/luxury/2018/09/28/L1010137_trans_NvBQzQNjv4BqZgEkZX3M936N5BQK4Va8RWtT0gK_6EfZT336f62EI5U.JPG"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, return_tensors="pt")

使用 requests 從 URL 取得影像,PIL.Image.open() 開啟影像。processor 預處理影像,轉換為 PyTorch 張量。

模型推論和後處理

outputs = model(**inputs)
logits = outputs.logits.cpu()
upsampled_logits = nn.functional.interpolate(
    logits,
    size=image.size[::-1],
    mode="bilinear",
    align_corners=False,
)
pred_seg = upsampled_logits.argmax(dim=1)[0]

將影像輸入模型,得到 logits。使用雙線性插值將 logits 升取樣到原始影像大小。從升取樣後的 logits 中提取預測的分割遮罩。

顯示分割遮罩

plt.imshow(pred_seg)
plt.show()

使用 matplotlib.pyplot.imshow() 顯示預測的分割遮罩。

這段程式碼展示瞭如何使用預訓練的語義分割模型對服裝影像進行分割,並將結果視覺化。透過 Hugging Face 平台,我們可以輕鬆使用各種預訓練模型,快速構建影像分割應用。在實際應用中,可以根據需求選擇不同的模型和調整引數,以達到最佳的分割效果。隨著模型的進步和算力的提升,影像語義分割技術將在更多領域發揮作用。

OpenAI API 深度解析:功能、應用與實務

OpenAI API 提供強大的 AI 功能,涵蓋文字、程式碼、影像等多個領域,讓開發者輕鬆整合 AI 技術。本文將探討 OpenAI API 的核心功能、應用場景以及實務操作範例。

核心模型與功能

OpenAI API 提供多種預訓練模型:

  • GPT-4 與 GPT-3.5: 理解和生成文字與程式碼。
  • DALL-E: 根據文字描述生成和修改影像。
  • Whisper: 語音轉文字。
  • Embeddings 與 Moderation Models: 文字轉換為數值向量,以及識別敏感內容。
  graph LR
    A[GPT-4/3.5] --> B(文字/程式碼生成)
    C[DALL-E] --> D(影像生成)
    E[Whisper] --> F(語音轉文字)
    G[Embeddings] --> H(數值向量)
    I[Moderation] --> J(敏感內容識別)

OpenAI API 的應用相當廣泛,從聊天機器人、內容生成到程式碼輔助,都展現了其強大的能力。後續文章將探討如何使用 OpenAI API 開發實際應用,並分享一些實戰技巧和案例。

OpenAI API 以其強大的模型和友善的介面,為開發者提供了一個便捷的途徑,將先進的 AI 技術整合到各種應用中。從自然語言處理到影像生成,OpenAI API 的多功能性使其在各個領域都展現出巨大的潛力。

OpenAI API 支援客製化微調,讓開發者可以使用自有資料重新訓練預訓練模型,例如 GPT-4 或 CLIP。這項功能讓模型更貼近特定應用場景的需求,進而提升效能、降低成本並提高效率。

OpenAI API 的設計簡潔易用,清晰的檔案和豐富的範例,即使是資料科學新手也能快速上手。這使得開發者可以專注於應用邏輯的開發,而無需深入理解底層的 AI 技術細節。

OpenAI API 的基礎設施,以強大的 Kubernetes 叢集為根本,確保了高度的可擴充套件性。這對於佈署大型模型和應對使用者專案的成長至關重要,讓應用程式能夠輕鬆應對流量高峰和資料量的增加。

跨足多領域,產業應用遍地開花

OpenAI API 的多功能性使其在各行各業都有廣泛的應用:

  graph LR
    A[OpenAI API] --> B(聊天機器人 & 虛擬助理)
    A --> C(情感分析)
    A --> D(影像辨識)
    A --> E(文字比較)
    A --> F(程式碼完成)
    A --> G(遊戲 & 強化學習)
    A --> H(影像生成)
  • 聊天機器人和虛擬助理: 利用 GPT-4 等模型,API 可以驅動對話代理,提供更自然、更具互動性的使用者經驗,適用於客戶服務、線上教學和互動式娛樂等應用。

  • 情感分析: 透過分析文字資料,例如客戶回饋或社群媒體貼文,API 可以洞察公眾情緒和客戶滿意度,為企業決策提供 valuable insights。

  • 影像辨識: 使用 CLIP 等模型,API 將功能延伸到視覺領域,實作物件偵測和影像分類別,應用於零售、醫療保健、自動駕駛等領域。

  • 文字比較: 利用 text-embedding-ada-002 模型,API 提供文字比較功能,評估文字之間的相似性或差異性,應用於搜尋引擎、檔案比對和抄襲檢測等場景。

  • 程式碼完成: 由 OpenAI Codex 驅動的程式碼完成服務,支援多種程式語言,大幅提升開發效率。

  • 遊戲和強化學習: API 支援開發能夠在遊戲環境中學習和決策的 AI,展現其在強化學習應用中的潛力。

  • 影像生成: 根據 DALL-E 影像模型,API 提供從自然語言提示生成、編輯和建立影像變體的端點,開啟影像創作的新可能。

Python實戰:人物傳記摘要生成器

以下程式碼示範如何使用 OpenAI API 生成指定人物的傳記摘要:

pip install openai==1.35.7
from openai import OpenAI

client = OpenAI(api_key='YOUR API KEY')

person = input("請輸入您感興趣的人物姓名:")

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "您是一位人物傳記摘要器。"},
        {"role": "user", "content": f"請為我總結 {person} 的傳記。"},
    ]
)

print(response.choices[0].message.content)

這段程式碼首先透過 pip 安裝 OpenAI Python 套件,版本指定為 1.35.7。接著,匯入 OpenAI 模組,並使用 API 金鑰初始化 OpenAI 客戶端。程式碼提示使用者輸入人物姓名,然後將請求傳送到 OpenAI 的聊天 API,使用 gpt-4 模型生成傳記摘要。messages 引數定義了系統角色和使用者請求。最後,程式碼將 API 回應中的摘要內容列印到螢幕上。

  graph LR
    A[使用者輸入人物姓名] --> B{傳送請求到 OpenAI API};
    B -- 使用 GPT-4 模型 --> C[生成傳記摘要];
    C --> D[顯示摘要];

這個範例展現了 OpenAI API 的易用性和強大功能,讓開發者可以快速構建 AI 應用。

OpenAI API 提供了豐富的功能和靈活的介面,讓開發者能夠輕鬆地將先進的 AI 技術整合到各種應用中。隨著 AI 技術的持續發展,OpenAI API 也將不斷進化,為開發者提供更強大的工具和更廣闊的可能性。