Documentation ¶
Index ¶
- func ChatBase(url string, model string, msg string, fs []Function, ...) (string, error)
- func ChatBasedExtractData(url string, model string, msg string, fields map[string]any, ...) (map[string]any, error)
- func ChatWithStream(url string, model string, msg string, ...) (io.Reader, error)
- func DetailsToString(details []ChatDetail) string
- func ExtractDataBase(url string, model string, input string, description string, ...) (map[string]any, error)
- func ExtractFromResult(result string, fields map[string]any) (map[string]any, error)
- func Register(name string, gateway func() AIClient)
- func RegisteredAIGateways() []string
- type AIClient
- type AIConfig
- type AIConfigOption
- func WithAPIKey(k string) AIConfigOption
- func WithBaseURL(baseURL string) AIConfigOption
- func WithDebugStream(h ...bool) AIConfigOption
- func WithDomain(domain string) AIConfigOption
- func WithFunctionCallRetryTimes(times int) AIConfigOption
- func WithModel(model string) AIConfigOption
- func WithNoHttps(b bool) AIConfigOption
- func WithProxy(p string) AIConfigOption
- func WithStreamAndConfigHandler(h func(reader io.Reader, cfg *AIConfig)) AIConfigOption
- func WithStreamHandler(h func(io.Reader)) AIConfigOption
- func WithTimeout(timeout float64) AIConfigOption
- func WithType(t string) AIConfigOption
- type ChatChoice
- type ChatCompletion
- type ChatDetail
- type ChatDetails
- type ChatError
- type ChatMessage
- type ChatUsage
- type Chatter
- type Configurable
- type FuncReturn
- type Function
- type FunctionCall
- type FunctionCaller
- type Parameters
- type Property
- type Tool
- type ToolCall
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChatBasedExtractData ¶
func ChatWithStream ¶
func DetailsToString ¶
func DetailsToString(details []ChatDetail) string
func ExtractDataBase ¶
func ExtractFromResult ¶
func RegisteredAIGateways ¶ added in v1.3.3
func RegisteredAIGateways() []string
Types ¶
type AIClient ¶
type AIClient interface { Chatter FunctionCaller Configurable }
type AIConfig ¶
type AIConfig struct { // gateway network config BaseURL string Domain string `app:"name:domain,verbose:第三方加速域名,id:4"` NoHttps bool `app:"name:no_https,verbose:NoHttps,desc:是否禁用使用https请求api,id:3"` // basic model Model string `app:"name:model,verbose:模型名称,id:2"` Timeout float64 // `app:"name:请求超时时长"` Deadline time.Time APIKey string `app:"name:api_key,verbose:ApiKey,desc:APIKey / Token,required:true,id:1"` Proxy string `app:"name:proxy,verbose:代理地址,id:5"` StreamHandler func(io.Reader) Type string FunctionCallRetryTimes int }
func NewDefaultAIConfig ¶
func NewDefaultAIConfig(opts ...AIConfigOption) *AIConfig
type AIConfigOption ¶
type AIConfigOption func(*AIConfig)
func WithAPIKey ¶
func WithAPIKey(k string) AIConfigOption
func WithBaseURL ¶
func WithBaseURL(baseURL string) AIConfigOption
func WithDebugStream ¶
func WithDebugStream(h ...bool) AIConfigOption
func WithDomain ¶
func WithDomain(domain string) AIConfigOption
func WithFunctionCallRetryTimes ¶ added in v1.3.3
func WithFunctionCallRetryTimes(times int) AIConfigOption
func WithModel ¶
func WithModel(model string) AIConfigOption
func WithNoHttps ¶
func WithNoHttps(b bool) AIConfigOption
func WithProxy ¶
func WithProxy(p string) AIConfigOption
func WithStreamAndConfigHandler ¶
func WithStreamAndConfigHandler(h func(reader io.Reader, cfg *AIConfig)) AIConfigOption
func WithStreamHandler ¶
func WithStreamHandler(h func(io.Reader)) AIConfigOption
func WithTimeout ¶
func WithTimeout(timeout float64) AIConfigOption
func WithType ¶
func WithType(t string) AIConfigOption
type ChatChoice ¶
type ChatChoice struct { Index int `json:"index"` Message ChatDetail `json:"message"` FinishReason string `json:"finish_reason"` }
func ChatExBase ¶
func ChatExBase(url string, model string, details []ChatDetail, function []Function, opt func() ([]poc.PocConfigOption, error), streamHandler func(closer io.Reader)) ([]ChatChoice, error)
type ChatCompletion ¶
type ChatDetail ¶
type ChatDetail struct { Role string `json:"role"` Name string `json:"name,omitempty"` Content string `json:"content"` ToolCalls []*ToolCall `json:"tool_calls,omitempty"` ToolCallID string `json:"tool_call_id,omitempty"` FunctionCall *FunctionCall `json:"function_call,omitempty"` }
func NewAIChatDetail ¶
func NewAIChatDetail(content string) ChatDetail
assistantMessage 根据传入的内容构造并返回一个 OpenAI 助手信息 Example: ``` d = openai.ChatEx( [ openai.userMessage("What is the weather like today?"), openai.assistantMessage("72 degrees and sunny."), openai.userMessage("What will the temperature be tomorrow?"), ], )~ ```
func NewSystemChatDetail ¶
func NewSystemChatDetail(content string) ChatDetail
systemMessage 根据传入的内容构造并返回一个 OpenAI 系统信息 Example: ``` d = openai.ChatEx( [ openai.systemMessage("The weather in Boston is 72 degrees and sunny."), openai.userMessage("What is the weather like today?"), ], )~ ```
func NewToolChatDetail ¶
func NewToolChatDetail(name, content string) ChatDetail
toolMessage 根据传入的函数名,内容构造并返回一个 OpenAI 工具信息,用于指示工具返回结果 Example: ``` session = openai.NewSession( openai.proxy("http://127.0.0.1:7890") ) result = session.Chat(openai.userMessage("What is the weather like in Boston?"), openai.newFunction( "get_current_weather", "Get the current weather in a given location", openai.functionProperty("location", "string", "The city and state, e.g. San Francisco, CA"), openai.functionRequired("location"), ), )~ result = session.Chat(openai.toolMessage("get_current_weather", `{"degree":72,"weather":"sunny"}`))~ println(result.String()) ```
func NewToolChatDetailWithID ¶
func NewToolChatDetailWithID(id, name, content string) ChatDetail
toolMessageWithID 根据传入的ID,函数名,内容构造并返回一个 OpenAI 工具信息,用于指示工具返回结果 Example: ``` session = openai.NewSession( openai.proxy("http://127.0.0.1:7890") ) result = session.Chat(openai.userMessage("What is the weather like in Boston?"), openai.newFunction( "get_current_weather", "Get the current weather in a given location", openai.functionProperty("location", "string", "The city and state, e.g. San Francisco, CA"), openai.functionRequired("location"), ), )~ result = session.Chat(openai.toolMessage("get_current_weather", `{"degree":72,"weather":"sunny"}`))~ println(result.String()) ```
func NewUserChatDetail ¶
func NewUserChatDetail(content string) ChatDetail
userMessage 根据传入的内容构造并返回一个 OpenAI 用户信息 Example: ``` d = openai.ChatEx( [ openai.systemMessage("The weather in Boston is 72 degrees and sunny."), openai.userMessage("What is the weather like today?"), ], )~ ```
type ChatDetails ¶
type ChatDetails []ChatDetail
func (ChatDetails) ChatMessages ¶
func (details ChatDetails) ChatMessages() []ChatDetail
ChatMessages 返回一个 ChatDetail 切片 Example: ``` d = openai.ChatEx( [ openai.userMessage("What is the weather like today?"), openai.assistantMessage("72 degrees and sunny."), openai.userMessage("What will the temperature be tomorrow?"), ], )~ println(d.ChatMessages()) ```
func (ChatDetails) FirstString ¶
func (details ChatDetails) FirstString() string
String 返回第一个消息 Example: ``` d = openai.ChatEx( [ openai.userMessage("What is the weather like today?"), openai.assistantMessage("72 degrees and sunny."), openai.userMessage("What will the temperature be tomorrow?"), ], )~ println(d.String()) ```
func (ChatDetails) FunctionCallResult ¶
func (details ChatDetails) FunctionCallResult() map[string]any
FunctionCallResult 返回函数调用的结果 Example: ``` d = openai.ChatEx( [ openai.userMessage("What is the weather like in Boston?") ], openai.newFunction( "get_current_weather", "Get the current weather in a given location", openai.functionProperty("location", "string", "The city and state, e.g. San Francisco, CA"), openai.functionRequired("location"), ), openai.proxy("http://127.0.0.1:7890"), )~ println(d.FunctionCallResult()) ```
func (ChatDetails) String ¶
func (details ChatDetails) String() string
String 返回消息切片中包含的所有消息 Example: ``` d = openai.ChatEx( [ openai.userMessage("What is the weather like today?"), openai.assistantMessage("72 degrees and sunny."), openai.userMessage("What will the temperature be tomorrow?"), ], )~ println(d.String()) ```
type ChatMessage ¶
type ChatMessage struct { Model string `json:"model"` Messages []ChatDetail `json:"messages"` Tools []Tool `json:"tools,omitempty"` Stream bool `json:"stream"` }
func NewChatMessage ¶
func NewChatMessage(model string, messages []ChatDetail, funcs ...Function) *ChatMessage
type Configurable ¶
type Configurable interface { LoadOption(opt ...AIConfigOption) BuildHTTPOptions() ([]poc.PocConfigOption, error) CheckValid() error }
type FuncReturn ¶
type Function ¶
type Function struct { Name string `json:"name"` Description string `json:"description"` Parameters Parameters `json:"parameters"` }
type FunctionCall ¶
! 已弃用
type FunctionCaller ¶
type Parameters ¶
type ToolCall ¶
type ToolCall struct { ID string `json:"id"` Type string `json:"type"` Function FuncReturn `json:"function"` }