mirror of
https://github.com/zhengkai/orca.git
synced 2026-02-04 15:12:26 +08:00
up
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
curl http://localhost:21035/v1/engines/text-embedding-ada-002/embeddings \
|
||||
curl http://localhost:22035/v1/engines/text-embedding-ada-002/embeddings \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $OPENAI_API_KEY" \
|
||||
-d '{"input": ["\u80fd\u91cf\u793c\u7269\u662f\u600e\u4e48\u56de\u4e8b\uff1f\u7528\u4e2d\u6587"], "encoding_format": "base64"}'
|
||||
-d '{"input":["\u80fd\u91cf\u793c\u7269\u662f\u600e\u4e48\u56de\u4e8b\uff1f\u7528\u4e2d\u6587"], "encoding_format": "base64"}'
|
||||
|
||||
@@ -10,7 +10,7 @@ var (
|
||||
|
||||
WebAddr = `localhost:22035`
|
||||
|
||||
RemoteAPI = `https://api.openai.com`
|
||||
OpenAIBase = `https://api.openai.com`
|
||||
|
||||
OpenAIKey = ``
|
||||
)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
@@ -22,4 +24,10 @@ func init() {
|
||||
*v = s
|
||||
}
|
||||
}
|
||||
|
||||
_, err := url.Parse(OpenAIBase)
|
||||
if err != nil {
|
||||
fmt.Println(`OpenAI base URL is invalid.`)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,22 +2,22 @@ package core
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"project/config"
|
||||
"project/pb"
|
||||
"project/zj"
|
||||
"project/util"
|
||||
"time"
|
||||
)
|
||||
|
||||
func fetchRemote(r *pb.Req) (ab []byte, err error) {
|
||||
func (pr *row) fetchRemote() (ab []byte, ok bool, err error) {
|
||||
|
||||
u, err := url.Parse(config.RemoteAPI)
|
||||
if err != nil {
|
||||
zj.W(`url fail`, config.RemoteAPI, err)
|
||||
return
|
||||
}
|
||||
r := pr.req
|
||||
var b bytes.Buffer
|
||||
pr.failLog = &b
|
||||
|
||||
u, _ := url.Parse(config.OpenAIBase)
|
||||
u.Path = r.Path
|
||||
|
||||
req, err := http.NewRequest(r.Method, u.String(), bytes.NewReader(r.Body))
|
||||
@@ -25,6 +25,17 @@ func fetchRemote(r *pb.Req) (ab []byte, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
b.WriteString(pr.hr.URL.String())
|
||||
b.WriteString("\n\nreq header:\n\n")
|
||||
for k, v := range pr.hr.Header {
|
||||
fmt.Fprintf(&b, "\t%s: %v\n", k, v)
|
||||
}
|
||||
b.WriteString("\n")
|
||||
fmt.Fprintf(&b, "req body: %d\n\n", len(r.Body))
|
||||
if len(r.Body) > 0 {
|
||||
fmt.Fprintf(&b, "%s\n\n", r.Body)
|
||||
}
|
||||
|
||||
req.Header.Set(`Content-Type`, `application/json`)
|
||||
req.Header.Set(`Authorization`, `Bearer `+config.OpenAIKey)
|
||||
|
||||
@@ -33,14 +44,35 @@ func fetchRemote(r *pb.Req) (ab []byte, err error) {
|
||||
}
|
||||
rsp, err := client.Do(req)
|
||||
if err != nil {
|
||||
fmt.Fprintf(&b, "client.Do fail: %s\n", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for k, v := range rsp.Header {
|
||||
zj.J(k, v)
|
||||
if rsp.StatusCode >= 200 || rsp.StatusCode < 300 {
|
||||
// ok = true
|
||||
} else {
|
||||
err = fmt.Errorf(`status code fail: %d`, rsp.StatusCode)
|
||||
b.WriteString(err.Error())
|
||||
}
|
||||
|
||||
b.WriteString("req header:\n\n")
|
||||
for k, v := range rsp.Header {
|
||||
fmt.Fprintf(&b, "\t%s: %v\n", k, v)
|
||||
}
|
||||
b.WriteString("\n")
|
||||
|
||||
ab, err = io.ReadAll(rsp.Body)
|
||||
if err != nil {
|
||||
fmt.Fprintf(&b, "rsp body: %d %v\n\n", len(ab), err)
|
||||
b.Write(ab)
|
||||
}
|
||||
|
||||
rsp.Body.Close()
|
||||
return
|
||||
}
|
||||
|
||||
func writeFailLog(hash [16]byte, ab []byte) {
|
||||
date := time.Now().Format(`0102-150405`)
|
||||
file := fmt.Sprintf(`fail/%s-%x.txt`, date, hash)
|
||||
util.WriteFile(file, ab)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"project/pb"
|
||||
@@ -19,6 +20,7 @@ type row struct {
|
||||
done bool
|
||||
t time.Time
|
||||
mux sync.RWMutex
|
||||
failLog *bytes.Buffer
|
||||
}
|
||||
|
||||
func (pr *row) run() {
|
||||
@@ -28,10 +30,16 @@ func (pr *row) run() {
|
||||
s := fmt.Sprintf(`%x, %s`, pr.hash, pr.t.Format(`2006-01-02 15:04:05`))
|
||||
zj.J(`new`, s)
|
||||
|
||||
pr.rsp, pr.err = fetchRemote(pr.req)
|
||||
var ok bool
|
||||
pr.rsp, ok, pr.err = pr.fetchRemote()
|
||||
if pr.err == nil && ok {
|
||||
pr.failLog.Reset()
|
||||
} else {
|
||||
go writeFailLog(pr.hash, pr.failLog.Bytes())
|
||||
}
|
||||
|
||||
go pr.saveFile()
|
||||
go pr.metrics()
|
||||
// go pr.metrics()
|
||||
|
||||
pr.done = true
|
||||
pr.mux.Unlock()
|
||||
@@ -48,6 +56,3 @@ func (pr *row) saveFile() {
|
||||
rspFile := rspCacheFile(pr.req)
|
||||
util.WriteFile(rspFile, pr.rsp)
|
||||
}
|
||||
|
||||
func (pr *row) metrics() {
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package project
|
||||
import (
|
||||
"project/build"
|
||||
"project/config"
|
||||
"project/tmptest"
|
||||
"project/web"
|
||||
"project/zj"
|
||||
|
||||
@@ -16,6 +17,8 @@ func Start() {
|
||||
|
||||
zj.Init()
|
||||
|
||||
tmptest.Test()
|
||||
|
||||
go web.Server()
|
||||
|
||||
life.Wait()
|
||||
|
||||
35
server/src/tmptest/t.go
Normal file
35
server/src/tmptest/t.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package tmptest
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"project/zj"
|
||||
)
|
||||
|
||||
// Test ...
|
||||
func Test() {
|
||||
fetch()
|
||||
}
|
||||
|
||||
func fetch() {
|
||||
|
||||
client := &http.Client{}
|
||||
req, err := http.NewRequest("GET", "http://10.0.84.49/e500", nil)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
bodyText, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
zj.J(`StatusCode`, resp.StatusCode)
|
||||
fmt.Printf("%s\n", bodyText)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user