Skip to content

Commit f73ef8c

Browse files
committed
update godot scenese
1 parent 13eb0ad commit f73ef8c

File tree

4 files changed

+80
-13
lines changed

4 files changed

+80
-13
lines changed

godot/examples/simple/message.gd

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class_name Message
2+
extends Node
3+
4+
@onready var text_container = %Text
5+
@onready var icon = %Panel
6+
@export_enum("user", "assistant") var sender: String
7+
8+
var completion_id: int = -1
9+
var pending: bool = false
10+
var errored: bool = false
11+
12+
func set_text(new_text: String):
13+
text_container.text = new_text
14+
15+
func append_text(new_text: String):
16+
text_container.text += new_text
17+

godot/examples/simple/message.tscn

+32-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,37 @@
1-
[gd_scene format=3 uid="uid://t862t0v8ht2q"]
1+
[gd_scene load_steps=5 format=3 uid="uid://t862t0v8ht2q"]
22

3-
[node name="RichTextLabel" type="RichTextLabel"]
4-
offset_right = 40.0
5-
offset_bottom = 40.0
3+
[ext_resource type="Script" path="res://examples/simple/message.gd" id="1_pko33"]
4+
[ext_resource type="Texture2D" uid="uid://dplw232htshgc" path="res://addons/godot-llama-cpp/assets/godot-llama-cpp-1024x1024.svg" id="2_dvc7y"]
5+
6+
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_t8bgj"]
7+
texture = ExtResource("2_dvc7y")
8+
9+
[sub_resource type="Theme" id="Theme_bw3pb"]
10+
Panel/styles/panel = SubResource("StyleBoxTexture_t8bgj")
11+
12+
[node name="RichTextLabel" type="HBoxContainer"]
13+
anchors_preset = 15
14+
anchor_right = 1.0
15+
anchor_bottom = 1.0
16+
grow_horizontal = 2
17+
grow_vertical = 2
18+
size_flags_horizontal = 3
19+
theme_override_constants/separation = 20
20+
script = ExtResource("1_pko33")
21+
sender = "assistant"
22+
23+
[node name="Panel" type="Panel" parent="."]
24+
unique_name_in_owner = true
25+
custom_minimum_size = Vector2(80, 80)
26+
layout_mode = 2
27+
size_flags_vertical = 0
28+
theme = SubResource("Theme_bw3pb")
29+
30+
[node name="Text" type="RichTextLabel" parent="."]
31+
unique_name_in_owner = true
32+
layout_mode = 2
633
size_flags_horizontal = 3
734
focus_mode = 2
35+
text = "..."
836
fit_content = true
9-
scroll_active = false
1037
selection_enabled = true

godot/examples/simple/simple.gd

+26-8
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,40 @@
11
extends Node
22

3+
const message = preload("res://examples/simple/message.tscn")
4+
35
@onready var messages_container = %MessagesContainer
46
@onready var llama_context = %LlamaContext
57

6-
var message = preload("res://examples/simple/message.tscn")
7-
88
func _on_text_edit_submit(input: String) -> void:
99
handle_input(input)
1010

1111
func handle_input(input: String) -> void:
12-
var new_message = message.instantiate()
13-
new_message.text = input
14-
messages_container.add_child(new_message)
12+
var completion_id = llama_context.request_completion(input)
13+
14+
var user_message: Message = message.instantiate()
15+
messages_container.add_child(user_message)
16+
user_message.set_text(input)
17+
user_message.sender = "user"
18+
user_message.completion_id = completion_id
1519

16-
var id = llama_context.request_completion(input)
17-
print("request id: ", id)
20+
var ai_message: Message = message.instantiate()
21+
messages_container.add_child(ai_message)
22+
ai_message.sender = "assistant"
23+
ai_message.completion_id = completion_id
24+
ai_message.pending = true
1825

1926

2027

2128
func _on_llama_context_completion_generated(chunk: Dictionary) -> void:
22-
print("new chunk: ", chunk)
29+
var completion_id = chunk.id
30+
for message: Message in messages_container.get_children():
31+
if message.completion_id != completion_id or message.sender != "assistant":
32+
continue
33+
if chunk.has("error"):
34+
message.errored = true
35+
elif chunk.has("text"):
36+
if message.pending:
37+
message.pending = false
38+
message.set_text(chunk["text"])
39+
else:
40+
message.append_text(chunk["text"])

godot/examples/simple/simple.tscn

+5
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ unique_name_in_owner = true
4040
layout_mode = 2
4141
size_flags_horizontal = 3
4242
size_flags_vertical = 3
43+
theme_override_constants/separation = 30
4344

4445
[node name="RichTextLabel2" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer/MessagesContainer" instance=ExtResource("2_7iip7")]
4546
layout_mode = 2
47+
48+
[node name="Text" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer/MessagesContainer/RichTextLabel2" index="1"]
4649
text = "How can I help you?"
4750

4851
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer"]
@@ -69,3 +72,5 @@ unique_name_in_owner = true
6972
[connection signal="submit" from="Panel/MarginContainer/VBoxContainer/HBoxContainer/TextEdit" to="." method="_on_text_edit_submit"]
7073
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/HBoxContainer/Button" to="Panel/MarginContainer/VBoxContainer/HBoxContainer/TextEdit" method="_on_button_pressed"]
7174
[connection signal="completion_generated" from="LlamaContext" to="." method="_on_llama_context_completion_generated"]
75+
76+
[editable path="Panel/MarginContainer/VBoxContainer/ScrollContainer/MessagesContainer/RichTextLabel2"]

0 commit comments

Comments
 (0)