神级插件Bito介绍及使用

news2024/11/15 11:18:57

还在用其他AI?不是说它不火了,而是你基本上很难访问了。这里介绍个便宜且免费的AI聊天插件,一样可以很棒。永久免费且不限制次数,有这好事?且听下文分解。

前言

虽然GPT 是用不了,推荐下国内的一些大模型,做的也相当不错了,至少可以追到GPT-3.5了。想体验人工智能AI的,可以试用下百度,科大讯飞等大模型。然而,这里要介绍的并不是这些。

BITO简介

Bito 是一个继Copilot之后的又一款神级IDEA代码辅助插件,感觉它可以超越Copilot,它的强大之处就是可以通过类似于ChatGPT对话的方式来编写代码,分析代码等,生成的代码可以复制以及直接插入。

最最关键的是它的注册流程很简单,而且免费。

插件介绍

虽然BITO插件很好用,但是想用它用在其他地方。所以还是api更灵活方便些。分享给有需要的伙伴,欢迎点赞评论和收藏。

完整项目代码上传到csdn了,可以接入公众号。

下载地址:https://download.csdn.net/download/qq8864/87921258

报文示例

 报文请求:

POST https://bitoai.bito.ai/ai/v2/chat/?processSilently=true HTTP/1.1
content-type: application/json
sec-ch-ua:	" Not A;Brand";v="99", "Chromium";v="102"
authorization:	10086
user-agent:	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.75.1 Chrome/102.0.5005.194 Electron/19.1.9 Safari/537.36
sec-ch-ua-platform:	"Windows"
accept:	*/*
origin:	vscode-webview://00ufp6vep7ebihor39h3aap2cnc6j0ptg8638daeifr55n0kqpom

{
	"bitoUserId": 10086,
	"email": "534117529@qq.com",
	"ideName": "VSCODE",
	"prompt": "今天的天气",
	"uId": "bbbb-97ad-4885-897b-3df900fa82ce",
	"wsId": 10086,
	
	"stream": false,
	"requestId": "aaaa-5e55-8959-fddc-aa9f0cf12b64"
}

应答:

HTTP/1.1 200 OK
Date: Sat, 17 Jun 2023 08:56:44 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 262
Connection: close
Access-Control-Allow-Origin: *
Vary: Origin

{
  "response": "抱歉,作为AI语言模型,我没有实时获取天气信息的能力。请您打开天气预报应用或者网站查询当地天气情况。",
  "status": 0,
  "created": "2023-06-17T08:56:44.054650024Z",
  "id": "chatcmpl-7SM1ZH0yQ2Q4H9liMwCt0yOa9DTlD"
}

golang封装

https请求

func HttpsPostNotVerify(url string, headers map[string]string, data []byte) ([]byte, error) {

	tr := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}
	client := &http.Client{Transport: tr}
	log.Println("begin post...")
	req, err := http.NewRequest("POST", url, bytes.NewReader(data))
	if err != nil {
		// handle error
		log.Println("error..")
		log.Println(err)
		return nil, err
	}

	for key := range headers {
		fmt.Println(key, ":", headers[key])
		req.Header.Set(key, headers[key])
	}

	resp, err := client.Do(req)
	if err != nil {
		// handle error
		log.Println("error1..")
		log.Println(err)
		return nil, err
	}

	defer resp.Body.Close()

	var body []byte
	body, err = ioutil.ReadAll(resp.Body)
	if err != nil {
		// handle error
		log.Println(err)
		return nil, err

	}

	//fmt.Println(string(body))
	//log.Printf(string(body))
	return body, nil
	//jsonStr := string(body)
	//fmt.Println("jsonStr", jsonStr)
}

func ChatHttpsPost(url string, body []byte) ([]byte, error) {
	headers := make(map[string]string)
	headers["user-agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.75.1 Chrome/102.0.5005.194 Electron/19.1.9 Safari/537.36"
	headers["content-type"] = "application/json"
	headers["authorization"] = "xxxxxx"
	headers["accept"] = "*/*"
	headers["origin"] = "vscode-webview://00uxxxxxxxxqpom*"

	out, err := HttpsPostNotVerify(url, headers, body)
	if err != nil {
		//log.Info(sn + err)
		return nil, err
	}
	//log.Info(strout)
	return out, nil
}

chat封装

type RequestBITO struct{
	BitoUserId int `json:"bitoUserId"`
	Email string `json:"email"`
	IdeName string `json:"ideName"`
	Prompt string `json:"prompt"`
	UId string `json:"uId"`
	WsId int `json:"wsId"`
	Stream bool `json:"stream"`
	RequestId string `json:"requestId"`

}

func AskChatBITO(question string) string{

	fmt.Printf("\033[31mAsk chatBITO,\033[0m question:%s\n", question)
	begin := time.Now()
    request := RequestBITO{
	BitoUserId:  xxxxxx,
	Email:  "5xxxxxx@qq.com",
	IdeName:  "VSCODE",
	Prompt:  question,
	UId:  "xxxxx-97ad-4885-897b-xxxx82ce",
	WsId:  xxxxx,
	Stream:  false,
	RequestId:  "xxxx-5e55-8959-fddc-xxxx12b64",
   }
   req, _ := json.Marshal(request)//将json对象序列化为byte[]
   fmt.Printf("req:%s\n", string(req))
   response, err := util.ChatHttpsPost(CHATBITOURL, req)
   elapsed := time.Since(begin)
   //fmt.Println(response, err)
   if err != nil {
	 fmt.Printf("\033[31mError:\033[0m %v\nTime: ", err,elapsed)
	 return ""
   }else{
	 fmt.Printf("Answer:%s\n\033[32mTime:\033[0m %v\n\n", string(response),elapsed)
	 return string(response)
   }
}

测试验证

可以看到响应速度还挺快,总共耗时1.9秒。

其他资源

Bito - 超越Copilot的一款神级插件_杨林伟的博客-CSDN博客

福音:IDEA、VSCODE神级插件Bito_靈熙雲的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win10下pytorch3D安装方法,本人亲测可用

本人的电脑配置如下: GPU:GTX 1050TiCUDA:11.1python:3.8pytorch:1.9.0pytorch3d:0.7.1NVIDIA CUB:cub-1.9.10-1 目录 1.版本确认 2.下载cub 3.下载pytorch3d 4.下载VSC2019 5.编译pytorch…

Web3开发准备工作 手把手带你创建自己的 MetaMask 账号

查看本文 您需要在自己的谷歌浏览器中添加 扩展工具 MetaMask 如果没有添加 可以查看文章 Web3 将 MetaMask添加入谷歌浏览器 扩展程序中 我们打开它并点击开始使用 那么 我们第一次进来 肯定是啥都没有 所以 我们点 创建钱包 他这里 就会先跟你说清楚 他不会收集你的 秘钥 地…

握手信号的打拍

在数字电路的设计中,对关键路径的处理方法之一就是插入寄存器,然而,对握手信号插入寄存器则需要进行特殊的处理,否则可能导致数据传输的错乱,严重影响电路的功能。 如图所示,为了阐述对握手信号打拍的处理方式,我们给出了下图所示的简化模型,其中,上游的握手信号包括v…

OpenCV迭代去畸变undistortPoints 与vins的迭代不同 第二章vins前端 第三章imu预积分 第四章vio初始化

OpenCV去畸变undistortPoints原理解析 不动点迭代法—单变量非线性方程近似根matlab求解 淦VINS-MONO源码 03–openCV与VINS中去畸变方法的不同 这里用的方法和openCV不同,假设现在求A点的去畸变坐标,那么我们将A的坐标直接代入畸变模型中,求…

【Leetcode】2. 两数相加

一、题目 1、题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1: …

知识图谱项目——红色文化之张学良人物知识图谱(Neo4j+vue+flask+mysql实现)

张学良人物简史知识图谱_说明文档 本项目为人工智能专业大三知识图谱课程期末作业。意在完成一个以张学良为背景的红色文化类知识图谱。文末放上本项目的代码地址。 文章目录 张学良人物简史知识图谱_说明文档:rocket:前端:rocket:后端:rocket:中间件:rocket:数据库:rocket:服…

深度学习(22)——YOLO系列(2)

深度学习(22)——YOLO系列(2) 文章目录 深度学习(22)——YOLO系列(2)1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码,后面再出v5&…

代码托管/版本控制工具:Git的安装和使用

目录 一、Git的下载和安装二、Git基本配置三、代码上传到远程仓库四、代码下载到本地 一、Git的下载和安装 1.登录GitHub官网https://github.com/注册账户密码 2.登录https://git-scm.com/download/win (根据自己电脑的位数和系统下载git) 3.双击Gi…

02-IDEA 集成Maven

一. 下载IDEA编辑器 下载地址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选中免费开源的社区版本 创建桌面图标和添加安装路径到系统变量,其他的默认安装即可。 二. 配置Maven环境 分为局部配置和全局配置 1. 局部配置maven环境 …

004依赖

传递 一个坐标引入多个jar 传递 子工程 引入了父pom 也是一种传递 继承 继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等&#xff…

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】 文章目录 和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】一、前言二、数据读取和初步探索三、数据探索及可视化1、获取拥有最多充电站的 10 个国家2、一年中各月新开业数量…

I.MX RT1170之FlexSPI详解:FlexSPI基础知识和特性

最近我也在做RT1170的相关项目,由于项目需要,研究了Flash下载算法、NOR Flash空间的擦除/烧写(OTFAD XIP更新固件时要更新OTFAD Key Blob字段)、HyperRAM初始化等功能,这些都是开发过程中可能会遇到的一些问题,而这些都与FlexSPI接…

第2章 信息技术发展

文章目录 2.1.2计算机网络1.网络标准协议2.软件定义网络3.第五代移动通信技术 2.1.3存储和数据库1.存储技术2.数据结构模型3.常用数据库类型4.数据仓库 2.1.4信息安全2.1.5信息技术的发展2.2.1物联网2.2.2云计算2.2.3大数据2.2.4区块链2.2.5人工智能2.2.6虚拟现实 信息技术是在…

前端vue入门(纯代码)09

【09.vue中组件的自定义事件】 自定义组件链接 在vue中用的click【点击】、keyup【按键】……等事件,这些属于内置事件,也就是js自带的事件。 问题一:什么是组件自定义事件呢? 【内置事件】:是给html元素用的,比如s…

UG\NX二次开发 加密锁(加密狗)

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 加密锁简介 加密狗是一种用于保护软件版权的技术手段,它可以限制未经授权的用户在未经许可的情况下使用某些软件。软件加密锁可以保护软件开发商的知识产权,防止盗版和非法复制等行为,同时也可以…

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…

msvcr110.dll,丢失修复,msvcr110.dll,丢失修复详细解决办法

我们在运行软件程序或者游戏的时候,如果程序提示“无法启动此程序,因为计算机中丢失msvcr110.dll。尝试重新安装该程序以解决此问题”,如果说明您电脑系统中缺少或者未注册msvcr110.dll这个运行库文件,那么我们要如何解决这个问题…

Node内存管理+垃圾回收机制

最近看到《深入浅出node》这本书,里面正好有内存控制, 加上最近看到一篇文章,也是讲了内存管理和垃圾回收机制。 由于自己曾经做过一个ssl接口,导致node服务经常重启,我潜意识就怀疑是内存管理出现了问题,…

H264 NALU分析

标题 1.H264介绍2.H264编解码解析2.1. H264编码原理2.2 H264的I帧,P帧,B帧2.3 H264编码结构解析2.4 NALU2.4.1 NALU结构2.4.2 解析NALU2.4.3 annexb模式 1.H264介绍 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.…

Ansible Playbook

Ansible 的脚本 --- playbook 剧本 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3&…