Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
這個套件支援你在 Ruby 程式中使用 GPT 函數。
你可以確保每次呼叫 GPT 函數時,接近 100% 都會得到相同的結果。
在你的 Gemfile 中加入下面這行:
gem 'gpt-function'
就可以使用 bundle install
安裝這個套件。
# 在你的 Ruby 程式中引入 'gpt-function' Gem
require 'gpt-function'
# 你需要設定你的 api key 和 model name
GptFunction.configure(api_key: '...', model: 'gpt-4o-mini', batch_storage: MyBatchStorage)
# 使用內建的翻譯方法
p GptFunctions.翻譯成中文.call("banana") # "香蕉"
# 使用內建的擷取關鍵字方法
p GptFunctions.擷取關鍵字.call("臺北市政府推動綠色交通計劃,鼓勵民眾使用公共運輸和自行車") # ["臺北市政府", "綠色交通計劃", "民眾", "公共運輸", "自行車"]
# 你也可以自己定義方法
def 擷取關鍵字
# 創建一個簡單的 GPT 函數,你需要描述這個函數的功能,以及提供一些範例
GptFunction.new("Extract all keywords",
[
[
"臺灣最新5G網路覆蓋率達95%,推動智慧城市發展,領先亞洲多國",
["臺灣", "5G網路", "覆蓋率", "智慧城市", "亞洲"]
]
])
end
Batch Storage 是一個用來儲存 GPT 函數的結果的類別,你可以自己定義一個類似的類別,並且在 GptFunction.configure
中設定。
class MyBatchStorage
def initialize
@queue = []
end
def enqueue(value)
@queue << value
true
end
def dequeue
@queue.shift
end
end
GptFunction.configure(api_key: '...', model: 'gpt-4o-mini', batch_storage: MyBatchStorage)
你可以用 Batch.create 建立一個新的 Batch, 在 create 成功時,會自動將 Batch 存入 BatchStorage 中。
request1 = GptFunctions.翻譯成中文.to_request_body("apple")
request2 = GptFunctions.翻譯成中文.to_request_body("tesla")
batch = GptFunction::Batch.create([request1, request2])
你可以用 Batch.process 來處理 Batch,如果 Batch 的 status 在 "failed", "completed", "expired", "cancelled" 當中,Batch 會被從 queue 中移除,如果是其他狀態,Batch 會自動重新加入 queue 中,你只需要定期持續呼叫 process 就可以。
GptFunction::Batch.process do |batch|
puts "batch id: #{batch.id}, status: #{batch.status}, progress: #{batch.request_counts_completed}/#{batch.request_counts_total}"
batch.pairs.each do |input, output|
puts "input: #{input}, output: #{output}"
end
end
可以用 count 參數來限制每次處理的數量,預設值為 1。
GptFunction::Batch.process(count: 2) do |batch|
...
end
Batch Storage 整合 Active Record 的範例:
class BatchStatus < ApplicationRecord
class << self
def enqueue(hash)
model = BatchStatus.new
model.batch_id = hash[:id]
model.status = hash[:status]
model.request_counts_completed = hash[:request_counts_completed]
model.request_counts_failed = hash[:request_counts_failed]
model.request_counts_total = hash[:request_counts_total]
model.metadata = hash[:metadata]
model.payload = hash
model.save
true
end
def dequeue
model = first
model.destroy
model.payload
end
end
end
GptFunction.configure(api_key: '...', model: 'gpt-4o-mini', batch_storage: BatchStatus)
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that gpt-function demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.