نحوه ایجاد یک ابزار جستجوی وب با استفاده از OpenAi API در GO

در این آموزش ، ما یک ابزار ساده جستجوی وب را با استفاده از API OpenAI ایجاد خواهیم کرد. این برنامه از قابلیت های OpenAI برای پردازش نمایش داده های جستجو و ادغام جستجوی Google برای بازیابی نتایج مربوطه استفاده می کند. در پایان این راهنما ، یک ابزار جستجوی وب کاربردی برای ارتقاء پروژه های خود خواهید داشت.
فهرست مطالب
- مقدمه
- پیش نیازهای
- ساخت پوشه
- راه اندازی پروژه
- نوشتن منطق جستجو
- آزمایش برنامه
- پایان
مقدمه
ابزارهای جستجوی وب با استفاده از OpenAI یک روش هوشمندانه برای تعامل با موتورهای جستجو و نتایج پردازش ارائه می دهند. در این آموزش ، ما یک برنامه Go ایجاد خواهیم کرد که:
- نمایش داده های کاربر را می پذیرد.
- نتایج جستجو را با استفاده از جستجوی Google بازیابی می کند.
- نتایج را با API OpenAI برای خلاصه پردازش می کند.
پیش نیازهای
قبل از شروع ، اطمینان حاصل کنید که:
- GO نصب شده (نسخه 1.19 یا بالاتر).
- آتش سوزی باز
- دسترسی به یک API جستجوی Google یا یک ابزار مرورگر مناسب.
- دانش اساسی برنامه نویسی GO.
ساخت پوشه
ساختار زیر را برای پروژه خود ایجاد کنید:
websearch-go/
|-- main.go
|-- search/
| |-- search.go
|-- openai/
|-- openai.go
راه اندازی پروژه
مرحله 1: پروژه را آغاز کنید
دستور زیر را اجرا کنید تا یک ماژول GO جدید را اولیه کنید:
mkdir websearch-go && cd websearch-go
go mod init websearch-go
مرحله 2: وابستگی ها را نصب کنید
ما از کتابخانه های زیر استفاده خواهیم کرد:
-
github.com/joho/godotenv
برای متغیرهای محیط -
net/http
برای درخواست HTTP. -
encoding/json
برای تجزیه پاسخ های JSON.
کتابخانه های مورد نیاز را نصب کنید:
go get github.com/joho/godotenv
مرحله 3: ایجاد .env
پرونده
کلید API OpenAI و کلید API Google خود را به a اضافه کنید .env
پرونده:
OPENAI_API_KEY=your_openai_api_key
GOOGLE_API_KEY=your_google_api_key
GOOGLE_SEARCH_ENGINE_ID=your_search_engine_id
نوشتن منطق جستجو
مرحله 1: جستجوی Google را پیاده سازی کنید
یک فایل جدید ایجاد کنید search/search.go
:
package search
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
type GoogleSearchResult struct {
Items []struct {
Title string `json:"title"`
Link string `json:"link"`
Snippet string `json:"snippet"`
} `json:"items"`
}
func GoogleSearch(query string) ([]string, error) {
apiKey := os.Getenv("GOOGLE_API_KEY")
cx := os.Getenv("GOOGLE_SEARCH_ENGINE_ID")
url := fmt.Sprintf("https://www.googleapis.com/customsearch/v1?q=%s&key=%s&cx=%s", query, apiKey, cx)
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result GoogleSearchResult
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return nil, err
}
var links []string
for _, item := range result.Items {
links = append(links, fmt.Sprintf("%s: %s", item.Title, item.Link))
}
return links, nil
}
مرحله 2: ادغام OpenAi
یک فایل جدید ایجاد کنید openai/openai.go
:
package openai
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
type OpenAIRequest struct {
Model string `json:"model"`
Prompt string `json:"prompt"`
MaxTokens int `json:"max_tokens"`
Temperature float64 `json:"temperature"`
}
type OpenAIResponse struct {
Choices []struct {
Text string `json:"text"`
} `json:"choices"`
}
func Summarize(prompt string) (string, error) {
apiKey := os.Getenv("OPENAI_API_KEY")
url := "https://api.openai.com/v1/completions"
requestBody := OpenAIRequest{
Model: "text-davinci-003",
Prompt: prompt,
MaxTokens: 150,
Temperature: 0.7,
}
jsonBody, err := json.Marshal(requestBody)
if err != nil {
return "", err
}
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBody))
if err != nil {
return "", err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
var response OpenAIResponse
if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
return "", err
}
if len(response.Choices) > 0 {
return response.Choices[0].Text, nil
}
return "", fmt.Errorf("no response from OpenAI")
}
مرحله 3: جستجوی Google و OpenAI را با هم ترکیب کنید
در main.go
، هر دو سرویس را با هم ترکیب کنید:
package main
import (
"fmt"
"log"
"os"
"websearch-go/openai"
"websearch-go/search"
"github.com/joho/godotenv"
)
func main() {
if err := godotenv.Load(); err != nil {
log.Fatal("Error loading .env file")
}
query := "Latest technology trends"
fmt.Println("Searching for:", query)
results, err := search.GoogleSearch(query)
if err != nil {
log.Fatal(err)
}
for _, result := range results {
fmt.Println("Result:", result)
}
summary, err := openai.Summarize("Summarize these results: \n" + fmt.Sprint(results))
if err != nil {
log.Fatal(err)
}
fmt.Println("Summary:", summary)
}
آزمایش برنامه
برنامه را با استفاده از:
go run main.go
شما باید نتایج جستجو را مشاهده کنید که پس از آن یک خروجی خلاصه شده است.
پایان
در این راهنما ، ما یک ابزار جستجوی وب ساده را با استفاده از GO ، OpenAI API و Google Search ایجاد کردیم. این ترکیب به ما امکان می دهد تا نتایج جستجو را به صورت هوشمندانه واکشی و پردازش کنیم و آن را به ابزاری قدرتمند برای برنامه های مختلف تبدیل کنیم. با اضافه کردن یک رابط وب یا ویژگی های اضافی ، می توانید در این مورد گسترش دهید!