首页 > 其他分享 >golang openai GPT4o 示例代码

golang openai GPT4o 示例代码

时间:2024-06-21 18:59:15浏览次数:13  
标签:err 示例 fmt golang OPENAI KEY Printf openai

package main

import (
	"context"
	"errors"
	"fmt"
	"io"
	"log"
	"os"

	"github.com/joho/godotenv"
	openai "github.com/sashabaranov/go-openai"
)

func main() {
	err := godotenv.Load(".env")
	if err != nil {
		log.Fatalf("Some error occured. Err: %s", err)
	}

	OPENAI_API_KEY := os.Getenv("OPENAI_API_KEY")
	OPENAI_BASE_URL := os.Getenv("OPENAI_BASE_URL")
	config := openai.DefaultConfig(OPENAI_API_KEY)
	config.BaseURL = OPENAI_BASE_URL
	c := openai.NewClientWithConfig(config) // openai.NewClient(OPENAI_API_KEY)

	ctx := context.Background()

	req := openai.ChatCompletionRequest{
		Model: openai.GPT4o,
		// MaxTokens: 128*1024 - 1,
		Messages: []openai.ChatCompletionMessage{
			{
				Role:    openai.ChatMessageRoleUser,
				Content: "your question",
			},
		},
		Stream: true,
	}
	stream, err := c.CreateChatCompletionStream(ctx, req)
	if err != nil {
		fmt.Printf("ChatCompletionStream error: %v\n", err)
		return
	}
	defer stream.Close()

	fmt.Printf("Stream response: ")
	for {
		response, err := stream.Recv()
		if errors.Is(err, io.EOF) {
			fmt.Println("\nStream finished")
			return
		}

		if err != nil {
			fmt.Printf("\nStream error: %v\n", err)
			return
		}

		fmt.Printf(response.Choices[0].Delta.Content)
	}
}

标签:err,示例,fmt,golang,OPENAI,KEY,Printf,openai
From: https://www.cnblogs.com/soarowl/p/18261213

相关文章

  • 微信H5分享示例
    在H5页面(通常指使用HTML5技术开发的网页)分享内容到微信好友或朋友圈,需要使用微信的JS-SDK来实现。引入JS-SDK:在H5页面的<head>标签中引入微信JS-SDK的脚本文件。配置JS-SDK:在页面加载完成后,调用wx.config方法来配置JS-SDK。这一步通常需要提供一系列的配置参数,如appId、tim......
  • Python梯度提升决策树的方法示例
    梯度提升决策树(GradientBoostingDecisionTree,简称GBDT)是一种基于集成学习的算法,它通过构建多个决策树模型,并将它们组合在一起来实现更好的预测性能。GBDT的核心思想是在每轮迭代中,根据当前模型的残差(真实值与预测值之差)来训练一个新的决策树,然后将这个新树添加到模型中,以不断减......
  • Golang并发
    Sync.MutexMutex结构typeMutexstruct{ stateint32 semauint32}Sync.Mutex由两个字段构成,state用来表示当前互斥锁处于的状态,sema用于控制锁状态的信号量互斥锁state(32bit)主要记录了如下四种状态:waiter_num(29bit):记录了当前等待这个锁的goroutine数量starving(......
  • Anthropic 的 Claude 3.5 Sonnet 在企业人工智能竞赛中胜过 OpenAI 和谷歌
    全球领先的人工智能研究公司Anthropic宣布推出Claude3.5Sonnet,这是一款集无与伦比的性能和成本效益于一身的开创性人工智能模型。克劳德模型系列的最新迭代产品将彻底改变企业人工智能的格局,以低于竞争对手的成本为企业提供最先进的功能。Anthropic联合创始人Daniel......
  • 【Unity动画系统】Amimator Controller的概念及其使用示例
    Unity的AnimatorController是动画系统中的一个核心组件,它负责管理和控制动画状态机(AnimationStateMachine)的行为。AnimatorController包含了动画状态、转换规则、以及用于控制动画流程的参数。AnimatorController的概念:动画状态(AnimationStates):代表单个动画剪辑(Animati......
  • spring整合openAI大模型之Spring AI
    文章目录一、SpringAI简介1.什么是SpringAI2.SpringAI支持的大模型类型(1)聊天模型(2)文本到图像模型(3)转录(音频到文本)模型(4)嵌入模型(5)矢量数据库3.SpringAI版本二、SpringAI框架使用,对接OpenAI1.环境信息2.初始化3.配置文件(1)application.yml(2)pom文件4.聊天代码测试(1)聊天接......
  • golang interface guard 技术(接口守护)
     Go代码的接口守卫(interfaceguards)技术,通常用于库的开发,以确保类型符合预期的接口。 下面示例的Interfaceguards确保App类型实现了caddy.App、caddy.Provisioner和caddy.Validator接口。具体来说,它通过将(*App)(nil)转换为这三个接口的类型,并将其赋值给匿名变量......
  • 视觉革命:深入解析OpenAI Sora文生视频技术
    视觉革命:深入解析OpenAISora文生视频技术在数字内容创作和人工智能的交汇点上,OpenAISora文生视频技术正引发一场视觉革命。通过将自然语言处理与生成视频技术相结合,Sora不仅为创作者提供了全新的表达方式,更为各行各业开创了无限可能。一、什么是OpenAISora?OpenAISora......
  • golang 爬虫修炼02 ---协程、互斥锁、读写锁、waitgroup
    协程程序:为了完成特定任务,使用某种语言编写的一组指令的集合,是一段静态的代码进程:是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域。进程是动态的,有产生、存在、消亡的过程线程:进程可进一步细分为线程,是一个程序......
  • Ant-Design-Vue动态表头并填充数据(含示例代码)
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......