Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何实现记住上下文 #38

Closed
chengpengvb opened this issue Mar 6, 2023 · 2 comments
Closed

如何实现记住上下文 #38

chengpengvb opened this issue Mar 6, 2023 · 2 comments

Comments

@chengpengvb
Copy link

chengpengvb commented Mar 6, 2023

流式的方式很酷,但是有个困难,我在多次调用streamChatCompletion方法的时候他不能记住上下文,有什么好的思路解决这个问题吗

@Grt1228
Copy link
Owner

Grt1228 commented Mar 6, 2023

前端保存message的上下文,发送message list到后端(需要控制字符数量,太久远的对话上下文可以舍弃掉)。详细的可以看下官方文档。
role是有三种角色的 :

    @Getter
    @AllArgsConstructor
    public enum Role {

        SYSTEM("system"),
        USER("user"),
        ASSISTANT("assistant"),
        ;
        private String name;
    }

user简单理解为问题
assistant是chatgpt的回答
通过构造message list实现上下文对话

@Grt1228
Copy link
Owner

Grt1228 commented Mar 6, 2023

"messages": [
		{
			"role": "user",
			"content": "你好啊我的伙伴!帮我吧下面的文字翻译成英文:我爱你中国。"
		},
				{
			"role": "assistant",
			"content": "I love you china。"
		},
				{
			"role": "user",
			"content": "再翻译成中文"
		},
				{
			"role": "assistant",
			"content": "我爱你中国。"
		},
				{
			"role": "user",
			"content": "下面这句话:Java是最好的开发语言"
		}
	]

流式输出返回的信息需要记录下来,组合成上面的对话形式。发送到服务端即可。
有一个需要注意的是当stream是true时,返回信息是delta,不再是message

"choices": [
		{
			"delta": {
				"content": "Java"
			},
			"index": 0,
			"finishReason": null
		}
	]

@chengpengvb

@Grt1228 Grt1228 closed this as completed Mar 6, 2023
@Grt1228 Grt1228 pinned this issue Mar 7, 2023
@Grt1228 Grt1228 unpinned this issue Mar 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants