当前位置:首页|资讯|百度|文心一言|GitHub|ChatGPT

百度文心一言-UE插件

作者:EleFangh发布时间:2023-07-18

# WenXinYiYan

百度文心一言-UE插件

截至发稿,文心一言是内测,API key都是保密的,我不能传

这玩意真一般般,远远比不得GPT-3.5 Turbo

估计要大改才能公测,这个插件就是单纯分享一下而已,感觉没啥用


# github地址

https://github.com/FHangH/WenXinYiYan


# 大致说明

使用UE C++,基于UE Http模块,没有第三方库,理论支持所有版本的UE,和所有平台,可以自行编译,用于对应的UE版本


# 注

- 随便做着玩的,目前支持流式响应

- 但文心一言好像本身不支持像ChatGPT那样详细的定制,本身很粗糙,应该不支持上下文联系(毕竟官方的API文档里的多轮请求和响应结果都是有问题的)


# 蓝图节点


注意这是默认的第一步,必须要有的,至于拿到的token怎么用无所谓,后面的节点里,已经默认使用生成的token了


文心一言的role里,只有user和assistant,不像GPT有system,官方的prompt看着难受,看不懂,懒得用了,只能这样了


流式响应很粗糙,我是说文心一言,不像GPT那样细分,没那么丝滑


```log

LogWenXin: Warning: ====== WenXinYiYan Start ======

LogWenXin: Warning: Request Stream Process

LogWenXin: Warning: Request Stream Complete

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = C++中的单例模式可以分为懒汉式和饿汉式两种实现方式。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 懒汉式单例模式在第一次使用时才创建对象,而饿汉式单例模式则在程序启动时就创建对象。同时,为了线程安全,还需要考虑单例对象的线程安全问题。

1. 懒汉式单例模式

懒汉式单例模式是一种延迟加载的方式,在第一次使用时才创建对象。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 可以通过以下代码实现:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

};


在这个实现中,getInstance()函数是一个静态函数,用于获取单例对象。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = getInstance()函数内部使用静态局部变量instance来存储单例对象,保证在多线程环境下只有一个实例存在。

2. 饿汉式单例模式

饿汉式单例模式是一种在程序启动时就创建对象的方式。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 可以通过以下代码实现:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

};


在这个实现中,getInstance()函数是一个静态函数,用于获取单例对象。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = getInstance()函数内部使用静态局部变量instance来存储单例对象,保证在多线程环境下只有一个实例存在。

3. 线程安全

在多线程环境下,为了保证单例对象的线程安全,需要采取一些措施。

* 静态局部变量:在getInstance()函数内部使用静态局部变量来存储单例对象,这样在多线程环境下只有一个实例存在。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 

* 线程安全的数据结构:可以使用互斥锁、信号量等线程安全的数据结构来保证单例对象的线程安全。

* 静态成员变量初始化:在静态局部变量instance的初始化中,可以加上静态初始化语法,这样在多线程环境下也可以保证只有一个实例存在。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 

例如:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

    static Singleton instance;

};

Singleton Singleton::instance;

int main() {

    // 创建多个线程

    std::thread t1([](){

        Singleton& instance = Singleton::getInstance();

    });

    std::thread t2([](){

        Singleton& instance = Singleton::getInstance();

    });

    t1.join();

    t2.join();

    return 0;

}


在这个实现中,getInstance()函数内部使用静态局部变量instance来存储单例对象,这样在多线程环境下只有一个实例存在。

LogWenXin: Warning: Request Process By Stream

LogWenXin: Warning: Deserialize Stream Response

LogWenXin: Warning: Stream Result = 同时,在静态局部变量instance的初始化中,使用了静态初始化语法,这样可以保证在多线程环境下也可以只有一个实例存在。

LogWenXin: Warning: Response Stream Success

LogWenXin: Warning: Request Stream Result = assistant : C++中的单例模式可以分为懒汉式和饿汉式两种实现方式。懒汉式单例模式在第一次使用时才创建对象,而饿汉式单例模式则在程序启动时就创建对象。同时,为了线程安全,还需要考虑单例对象的线程安全问题。

1. 懒汉式单例模式

懒汉式单例模式是一种延迟加载的方式,在第一次使用时才创建对象。可以通过以下代码实现:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

};


在这个实现中,getInstance()函数是一个静态函数,用于获取单例对象。getInstance()函数内部使用静态局部变量instance来存储单例对象,保证在多线程环境下只有一个实例存在。

2. 饿汉式单例模式

饿汉式单例模式是一种在程序启动时就创建对象的方式。可以通过以下代码实现:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

};


在这个实现中,getInstance()函数是一个静态函数,用于获取单例对象。getInstance()函数内部使用静态局部变量instance来存储单例对象,保证在多线程环境下只有一个实例存在。

3. 线程安全

在多线程环境下,为了保证单例对象的线程安全,需要采取一些措施。

* 静态局部变量:在getInstance()函数内部使用静态局部变量来存储单例对象,这样在多线程环境下只有一个实例存在。

* 线程安全的数据结构:可以使用互斥锁、信号量等线程安全的数据结构来保证单例对象的线程安全。

* 静态成员变量初始化:在静态局部变量instance的初始化中,可以加上静态初始化语法,这样在多线程环境下也可以保证只有一个实例存在。

例如:


class Singleton {

public:

    static Singleton& getInstance() {

        static Singleton instance;

        return instance;

    }

private:

    Singleton() {}

    Singleton(const Singleton&) = delete;

    Singleton& operator=(const Singleton&) = delete;

    static Singleton instance;

};

Singleton Singleton::instance;

int main() {

    // 创建多个线程

    std::thread t1([](){

        Singleton& instance = Singleton::getInstance();

    });

    std::thread t2([](){        Singleton& instance = Singleton::getInstance();

    });

    t1.join();

    t2.join();

    return 0;

}


在这个实现中,getInstance()函数内部使用静态局部变量instance来存储单例对象,这样在多线程环境下只有一个实例存在。同时,在静态局部变量instance的初始化中,使用了静态初始化语法,这样可以保证在多线程环境下也可以只有一个实例存在。

LogWenXin: Warning: ====== WenXinYiYan End ======

```


这个我承认我自己写的糙了,我不会写


这里演示的是流式响应过程中,中断流式响应的结果,不会调用OnFail,回调OnCompleted,回调结果默认直接为空



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1