From d86ca64fdf6a138898d9c42b2d7700954ced0a56 Mon Sep 17 00:00:00 2001 From: ken Date: Sun, 30 Mar 2025 14:14:11 +0800 Subject: [PATCH] =?UTF-8?q?example=20stream=20=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/src/common.ts | 4 +- examples/src/exec_chat.ts | 30 ++---- examples/src/exec_docstring.ts | 50 +++++---- examples/src/exec_explain.ts | 70 +++++++----- examples/src/exec_fix.ts | 55 +++++----- examples/src/exec_optimize.ts | 56 +++++----- examples/src/exec_unitest.ts | 56 +++++----- examples/src/game.py | 188 +++++++++++++++++++++++++++++++++ src/llm/llm.go | 12 ++- src/workflow/exec.go | 2 + 10 files changed, 379 insertions(+), 144 deletions(-) create mode 100644 examples/src/game.py diff --git a/examples/src/common.ts b/examples/src/common.ts index 6c997eb..1224970 100644 --- a/examples/src/common.ts +++ b/examples/src/common.ts @@ -1,8 +1,8 @@ import ws from 'ws'; process.env["NODE_TLS_REJECT_UNAUTHORIZED"]="0" -const ADDR = "ws://112.74.39.99:8080/ws" -// const ADDR = "ws://127.0.0.1:8080/ws" +// const ADDR = "ws://112.74.39.99:8080/ws" +const ADDR = "ws://127.0.0.1:8080/ws" export function makeClient( onMessage: ((data: ws.RawData) => void) | any = undefined, diff --git a/examples/src/exec_chat.ts b/examples/src/exec_chat.ts index 8fc7345..bd51590 100644 --- a/examples/src/exec_chat.ts +++ b/examples/src/exec_chat.ts @@ -1,18 +1,18 @@ import ws from 'ws'; import { makeClient } from "./common"; +let req = { + "cmd" : "exec_chat", + "request_id" : 123, // 随机生成 (必填) + "language" : "en", // 语言, en-英文, cn-中文,默认为 en (可选) + "msg" : "What would be a good company name a company that makes colorful socks?", + "model" : "local qwen2.5-coder:7b", //(必填) + "stream" : false // stream方式返回,目前未支持 (可选) +} + async function run() { let client = await makeClient() - - let req = { - "cmd" : "exec_chat", - "request_id" : 123, // 随机生成 (必填) - "language" : "en", // 语言, en-英文, cn-中文,默认为 en (可选) - "msg" : "What would be a good company name a company that makes colorful socks?", - "model" : "local qwen2.5-coder:7b", //(必填) - "stream" : false // stream方式返回,目前未支持 (可选) - } - + req.stream = false client.send(JSON.stringify(req)) } @@ -24,15 +24,7 @@ async function run_stream() { // console.log(data.toString()) }) - let req = { - "cmd" : "exec_chat", - "request_id" : 123, // 随机生成 (必填) - "language" : "en", // 语言, en-英文, cn-中文,默认为 en (可选) - "msg" : "What would be a good company name a company that makes colorful socks?", - "model" : "local qwen2.5-coder:7b", //(必填) - "stream" : true // stream方式返回,目前未支持 (可选) - } - + req.stream = true client.send(JSON.stringify(req)) } diff --git a/examples/src/exec_docstring.ts b/examples/src/exec_docstring.ts index dd60aa6..83de660 100644 --- a/examples/src/exec_docstring.ts +++ b/examples/src/exec_docstring.ts @@ -1,25 +1,39 @@ +import ws from 'ws'; import { makeClient } from "./common"; +let selected_text = { + "filepath": "example\\\\game.py", // 文件路径 + "range": { + "start": { "line": 33, "character": 0}, // 从33行0字符开始 + "end" : { "line": 45, "character": 41} // 到45行41字符结束 + }, + "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 +} + +let req = { + "cmd" : "exec_docstring", + "request_id": 123, // 随机生成 (必填) + "model" : "local qwen2.5-coder:7b", //(必填) + "stream" : false, + "selected_text": selected_text, +} + async function run() { let client = await makeClient() - - let selected_text = { - "filepath": "example\\\\game.py", // 文件路径 - "range": { - "start": { "line": 33, "character": 0}, // 从33行0字符开始 - "end" : { "line": 45, "character": 41} // 到45行41字符结束 - }, - "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 - } - - let req = { - "cmd" : "exec_docstring", - "request_id": 123, // 随机生成 (必填) - "model" : "local deepseek-r1:32b", //(必填) - "stream" : false, - "selected_text": selected_text, - } + req.stream = false client.send(JSON.stringify(req)) } -run() + +async function run_stream() { + let client = await makeClient((data: ws.RawData)=>{ + let d = JSON.parse(data.toString()) + process.stdout.write(d.msg) + // console.log(data.toString()) + }) + req.stream = true + client.send(JSON.stringify(req)) +} + + +run_stream() diff --git a/examples/src/exec_explain.ts b/examples/src/exec_explain.ts index 90bd6c3..b1fd722 100644 --- a/examples/src/exec_explain.ts +++ b/examples/src/exec_explain.ts @@ -1,35 +1,49 @@ +import ws from 'ws'; import { makeClient } from "./common"; +let selected_text = { + "filepath": "example\\\\game.py", // 文件路径 + "range": { + "start": { "line": 33, "character": 0}, // 从33行0字符开始 + "end" : { "line": 45, "character": 41} // 到45行41字符结束 + }, + "text": `class Food: \n\n\tdef __init__(self): \n\n\t\tx = random.randint(0, \n\t\t\t\t(WIDTH / SPACE_SIZE)-1) * SPACE_SIZE \n\t\ty = random.randint(0, \n\t\t\t\t(HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE \n\n\t\tself.coordinates = [x, y] \n\n\t\tcanvas.create_oval(x, y, x + SPACE_SIZE, y +\n\t\t\t\t\t\tSPACE_SIZE, fill=FOOD, tag="food") ` // 源码片段 +} + +let visible_text = { + "filepath": "g:\\\\workspace\\\\example\\\\game.py", + "range": { + "start": { "line": 6, "character": 0}, + "end" : { "line": 69, "character": 0} + }, + "text": `WIDTH = 500\nHEIGHT = 500\nSPEED = 200\nSPACE_SIZE = 20\nBODY_SIZE = 2\nSNAKE = "#0000FF"\nFOOD = "#FFFF00"\nBACKGROUND = "#000000"\n\n# Class to design the snake \nclass Snake: \n\n\tdef __init__(self): \n\t\tself.body_size = BODY_SIZE \n\t\tself.coordinates = [] \n\t\tself.squares = [] \n\n\t\tfor i in range(0, BODY_SIZE): \n\t\t\tself.coordinates.append([0, 0]) \n\n\t\tfor x, y in self.coordinates: \n\t\t\tsquare = canvas.create_rectangle( \n\t\t\t\tx, y, x + SPACE_SIZE, y + SPACE_SIZE, \n\t\t\t\t\tfill=SNAKE, tag="snake") \n\t\t\tself.squares.append(square) \n\n# Class to design the food \nclass Food: \n\n\tdef __init__(self): \n\n\t\tx = random.randint(0, \n\t\t\t\t(WIDTH / SPACE_SIZE)-1) * SPACE_SIZE \n\t\ty = random.randint(0, \n\t\t\t\t(HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE \n\n\t\tself.coordinates = [x, y] \n\n\t\tcanvas.create_oval(x, y, x + SPACE_SIZE, y +\n\t\t\t\t\t\tSPACE_SIZE, fill=FOOD, tag="food") \n\n# Function to check the next move of snake \ndef next_turn(snake, food): \n\n\tx, y = snake.coordinates[0] \n\n\tif direction == "up": \n\t\ty -= SPACE_SIZE \n\telif direction == "down": \n\t\ty += SPACE_SIZE \n\telif direction == "left": \n\t\tx -= SPACE_SIZE \n\telif direction == "right": \n\t\tx += SPACE_SIZE \n\n\tsnake.coordinates.insert(0, (x, y)) \n\n\tsquare = canvas.create_rectangle( \n\t\tx, y, x + SPACE_SIZE, \n\t\t\t\ty + SPACE_SIZE, fill=SNAKE) \n\n\tsnake.squares.insert(0, square) \n\n\tif x == food.coordinates[0] and y == food.coordinates[1]: ` +} + +let req = { + "cmd" : "exec_explain", + "request_id": 123, // 随机生成 (必填) + "model" : "local deepseek-r1:32b", //(必填) + "stream" : false, + "selected_text": selected_text, + "visible_text" : visible_text +} + async function run() { let client = await makeClient() - - let selected_text = { - "filepath": "example\\\\game.py", // 文件路径 - "range": { - "start": { "line": 33, "character": 0}, // 从33行0字符开始 - "end" : { "line": 45, "character": 41} // 到45行41字符结束 - }, - "text": `class Food: \n\n\tdef __init__(self): \n\n\t\tx = random.randint(0, \n\t\t\t\t(WIDTH / SPACE_SIZE)-1) * SPACE_SIZE \n\t\ty = random.randint(0, \n\t\t\t\t(HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE \n\n\t\tself.coordinates = [x, y] \n\n\t\tcanvas.create_oval(x, y, x + SPACE_SIZE, y +\n\t\t\t\t\t\tSPACE_SIZE, fill=FOOD, tag="food") ` // 源码片段 - } - - let visible_text = { - "filepath": "g:\\\\workspace\\\\example\\\\game.py", - "range": { - "start": { "line": 6, "character": 0}, - "end" : { "line": 69, "character": 0} - }, - "text": `WIDTH = 500\nHEIGHT = 500\nSPEED = 200\nSPACE_SIZE = 20\nBODY_SIZE = 2\nSNAKE = "#0000FF"\nFOOD = "#FFFF00"\nBACKGROUND = "#000000"\n\n# Class to design the snake \nclass Snake: \n\n\tdef __init__(self): \n\t\tself.body_size = BODY_SIZE \n\t\tself.coordinates = [] \n\t\tself.squares = [] \n\n\t\tfor i in range(0, BODY_SIZE): \n\t\t\tself.coordinates.append([0, 0]) \n\n\t\tfor x, y in self.coordinates: \n\t\t\tsquare = canvas.create_rectangle( \n\t\t\t\tx, y, x + SPACE_SIZE, y + SPACE_SIZE, \n\t\t\t\t\tfill=SNAKE, tag="snake") \n\t\t\tself.squares.append(square) \n\n# Class to design the food \nclass Food: \n\n\tdef __init__(self): \n\n\t\tx = random.randint(0, \n\t\t\t\t(WIDTH / SPACE_SIZE)-1) * SPACE_SIZE \n\t\ty = random.randint(0, \n\t\t\t\t(HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE \n\n\t\tself.coordinates = [x, y] \n\n\t\tcanvas.create_oval(x, y, x + SPACE_SIZE, y +\n\t\t\t\t\t\tSPACE_SIZE, fill=FOOD, tag="food") \n\n# Function to check the next move of snake \ndef next_turn(snake, food): \n\n\tx, y = snake.coordinates[0] \n\n\tif direction == "up": \n\t\ty -= SPACE_SIZE \n\telif direction == "down": \n\t\ty += SPACE_SIZE \n\telif direction == "left": \n\t\tx -= SPACE_SIZE \n\telif direction == "right": \n\t\tx += SPACE_SIZE \n\n\tsnake.coordinates.insert(0, (x, y)) \n\n\tsquare = canvas.create_rectangle( \n\t\tx, y, x + SPACE_SIZE, \n\t\t\t\ty + SPACE_SIZE, fill=SNAKE) \n\n\tsnake.squares.insert(0, square) \n\n\tif x == food.coordinates[0] and y == food.coordinates[1]: ` - } - - let req = { - "cmd" : "exec_explain", - "request_id": 123, // 随机生成 (必填) - "model" : "local deepseek-r1:32b", //(必填) - "stream" : false, - "selected_text": selected_text, - "visible_text" : visible_text - } + req.stream = false client.send(JSON.stringify(req)) } -run() + +async function run_stream() { + let client = await makeClient((data: ws.RawData)=>{ + let d = JSON.parse(data.toString()) + process.stdout.write(d.msg) + // console.log(data.toString()) + }) + req.stream = true + client.send(JSON.stringify(req)) +} + + +run_stream() diff --git a/examples/src/exec_fix.ts b/examples/src/exec_fix.ts index 3a9663a..3afd552 100644 --- a/examples/src/exec_fix.ts +++ b/examples/src/exec_fix.ts @@ -1,31 +1,38 @@ import ws from 'ws'; import { makeClient } from "./common"; +let selected_text = { + "filepath": "example\\\\game.py", // 文件路径 + "range": { + "start": { "line": 33, "character": 0}, // 从33行0字符开始 + "end" : { "line": 45, "character": 41} // 到45行41字符结束 + }, + "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 +} + +let req = { + "cmd" : "exec_fix", + "request_id": 123, // 随机生成 (必填) + "model" : "local deepseek-r1:32b", //(必填) + "stream" : false, + "selected_text": selected_text, +} + async function run() { - let client = await makeClient((data: ws.RawData)=>{ - let d = JSON.parse(data.toString()) - console.log("------------------------------- msg start -------------------------------") - console.log(d.msg) - console.log("------------------------------- msg end -------------------------------") - }) - - let selected_text = { - "filepath": "example\\\\game.py", // 文件路径 - "range": { - "start": { "line": 33, "character": 0}, // 从33行0字符开始 - "end" : { "line": 45, "character": 41} // 到45行41字符结束 - }, - "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 - } - - let req = { - "cmd" : "exec_fix", - "request_id": 123, // 随机生成 (必填) - "model" : "local deepseek-r1:32b", //(必填) - "stream" : false, - "selected_text": selected_text, - } + let client = await makeClient() + req.stream = false client.send(JSON.stringify(req)) } -run() +async function run_stream() { + let client = await makeClient((data: ws.RawData)=>{ + let d = JSON.parse(data.toString()) + process.stdout.write(d.msg) + // console.log(data.toString()) + }) + req.stream = true + client.send(JSON.stringify(req)) +} + + +run_stream() diff --git a/examples/src/exec_optimize.ts b/examples/src/exec_optimize.ts index 664f2c0..b0f250d 100644 --- a/examples/src/exec_optimize.ts +++ b/examples/src/exec_optimize.ts @@ -1,31 +1,39 @@ import ws from 'ws'; import { makeClient } from "./common"; +let selected_text = { + "filepath": "example\\\\game.py", // 文件路径 + "range": { + "start": { "line": 33, "character": 0}, // 从33行0字符开始 + "end" : { "line": 45, "character": 41} // 到45行41字符结束 + }, + "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 +} + +let req = { + "cmd" : "exec_optimize", + "request_id": 123, // 随机生成 (必填) + "model" : "local deepseek-r1:32b", //(必填) + "stream" : false, + "selected_text": selected_text, +} + async function run() { - let client = await makeClient((data: ws.RawData)=>{ - let d = JSON.parse(data.toString()) - console.log("------------------------------- msg start -------------------------------") - console.log(d.msg) - console.log("------------------------------- msg end -------------------------------") - }) - - let selected_text = { - "filepath": "example\\\\game.py", // 文件路径 - "range": { - "start": { "line": 33, "character": 0}, // 从33行0字符开始 - "end" : { "line": 45, "character": 41} // 到45行41字符结束 - }, - "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 - } - - let req = { - "cmd" : "exec_optimize", - "request_id": 123, // 随机生成 (必填) - "model" : "local deepseek-r1:32b", //(必填) - "stream" : false, - "selected_text": selected_text, - } + let client = await makeClient() + req.stream = false client.send(JSON.stringify(req)) } -run() + +async function run_stream() { + let client = await makeClient((data: ws.RawData)=>{ + let d = JSON.parse(data.toString()) + process.stdout.write(d.msg) + // console.log(data.toString()) + }) + req.stream = true + client.send(JSON.stringify(req)) +} + + +run_stream() diff --git a/examples/src/exec_unitest.ts b/examples/src/exec_unitest.ts index 3a9663a..6ea2d46 100644 --- a/examples/src/exec_unitest.ts +++ b/examples/src/exec_unitest.ts @@ -1,31 +1,39 @@ import ws from 'ws'; import { makeClient } from "./common"; +let selected_text = { + "filepath": "example\\\\game.py", // 文件路径 + "range": { + "start": { "line": 33, "character": 0}, // 从33行0字符开始 + "end" : { "line": 45, "character": 41} // 到45行41字符结束 + }, + "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 +} + +let req = { + "cmd" : "exec_fix", + "request_id": 123, // 随机生成 (必填) + "model" : "local deepseek-r1:32b", //(必填) + "stream" : false, + "selected_text": selected_text, +} + async function run() { - let client = await makeClient((data: ws.RawData)=>{ - let d = JSON.parse(data.toString()) - console.log("------------------------------- msg start -------------------------------") - console.log(d.msg) - console.log("------------------------------- msg end -------------------------------") - }) - - let selected_text = { - "filepath": "example\\\\game.py", // 文件路径 - "range": { - "start": { "line": 33, "character": 0}, // 从33行0字符开始 - "end" : { "line": 45, "character": 41} // 到45行41字符结束 - }, - "text": `def change_direction(new_direction): \n\n\tglobal direction \n\n\tif new_direction == 'left': \n\t\tif direction != 'right': \n\t\t\tdirection = new_direction \n\telif new_direction == 'right': \n\t\tif direction != 'left': \n\t\t\tdirection = new_direction \n\telif new_direction == 'up': \n\t\tif direction != 'down': \n\t\t\tdirection = new_direction \n\telif new_direction == 'down': \n\t\tif direction != 'up': \n\t\t\tdirection = new_direction` // 源码片段 - } - - let req = { - "cmd" : "exec_fix", - "request_id": 123, // 随机生成 (必填) - "model" : "local deepseek-r1:32b", //(必填) - "stream" : false, - "selected_text": selected_text, - } + let client = await makeClient() + req.stream = false client.send(JSON.stringify(req)) } -run() + +async function run_stream() { + let client = await makeClient((data: ws.RawData)=>{ + let d = JSON.parse(data.toString()) + process.stdout.write(d.msg) + // console.log(data.toString()) + }) + req.stream = true + client.send(JSON.stringify(req)) +} + + +run_stream() diff --git a/examples/src/game.py b/examples/src/game.py new file mode 100644 index 0000000..9acf5d3 --- /dev/null +++ b/examples/src/game.py @@ -0,0 +1,188 @@ +# Program in Python to create a Snake Game + +from tkinter import * +import random + +# Initialising Dimensions of Game +WIDTH = 500 +HEIGHT = 500 +SPEED = 200 +SPACE_SIZE = 20 +BODY_SIZE = 2 +SNAKE = "#0000FF" +FOOD = "#FFFF00" +BACKGROUND = "#000000" + +# Class to design the snake +class Snake: + + def __init__(self): + self.body_size = BODY_SIZE + self.coordinates = [] + self.squares = [] + + for i in range(0, BODY_SIZE): + self.coordinates.append([0, 0]) + + for x, y in self.coordinates: + square = canvas.create_rectangle( + x, y, x + SPACE_SIZE, y + SPACE_SIZE, + fill=SNAKE, tag="snake") + self.squares.append(square) + +# Class to design the food +class Food: + + def __init__(self): + + x = random.randint(0, + (WIDTH / SPACE_SIZE)-1) * SPACE_SIZE + y = random.randint(0, + (HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE + + self.coordinates = [x, y] + + canvas.create_oval(x, y, x + SPACE_SIZE, y + + SPACE_SIZE, fill=FOOD, tag="food") + +# Function to check the next move of snake +def next_turn(snake, food): + + x, y = snake.coordinates[0] + + if direction == "up": + y -= SPACE_SIZE + elif direction == "down": + y += SPACE_SIZE + elif direction == "left": + x -= SPACE_SIZE + elif direction == "right": + x += SPACE_SIZE + + snake.coordinates.insert(0, (x, y)) + + square = canvas.create_rectangle( + x, y, x + SPACE_SIZE, + y + SPACE_SIZE, fill=SNAKE) + + snake.squares.insert(0, square) + + if x == food.coordinates[0] and y == food.coordinates[1]: + + global score + + score += 1 + + label.config(text="Points:{}".format(score)) + + canvas.delete("food") + + food = Food() + + else: + + del snake.coordinates[-1] + + canvas.delete(snake.squares[-1]) + + del snake.squares[-1] + + if check_collisions(snake): + game_over() + + else: + window.after(SPEED, next_turn, snake, food) + +# Function to control direction of snake +def change_direction(new_direction): + + global direction + + if new_direction == 'left': + if direction != 'right': + direction = new_direction + elif new_direction == 'right': + if direction != 'left': + direction = new_direction + elif new_direction == 'up': + if direction != 'down': + direction = new_direction + elif new_direction == 'down': + if direction != 'up': + direction = new_direction + +# function to check snake's collision and position +def check_collisions(snake): + + x, y = snake.coordinates[0] + + if x < 0 or x >= WIDTH: + return True + elif y < 0 or y >= HEIGHT: + return True + + for body_part in snake.coordinates[1:]: + if x == body_part[0] and y == body_part[1]: + return True + + return False + +# Function to control everything +def game_over(): + + canvas.delete(ALL) + canvas.create_text(canvas.winfo_width()/2, + canvas.winfo_height()/2, + font=('consolas', 70), + text="GAME OVER", fill="red", + tag="gameover") + +# Giving title to the gaming window + + +window = Tk() +window.title("Snake Game") + + +score = 0 +direction = 'down' + +# Display of Points Scored in Game + +label = Label(window, text="Points:{}".format(score), + font=('consolas', 20)) +label.pack() + +canvas = Canvas(window, bg=BACKGROUND, + height=HEIGHT, width=WIDTH) +canvas.pack() + +window.update() + +window_width = window.winfo_width() +window_height = window.winfo_height() +screen_width = window.winfo_screenwidth() +screen_height = window.winfo_screenheight() + +x = int((screen_width/2) - (window_width/2)) +y = int((screen_height/2) - (window_height/2)) + +window.geometry(f"{window_width}x{window_height}+{x}+{y}") + +window.bind('', + lambda event: change_direction('left')) +window.bind('', + lambda event: change_direction('right')) +window.bind('', + lambda event: change_direction('up')) +window.bind('', + lambda event: change_direction('down')) + +snake = Snake() +food = Food() + +next_turn(snake, food) + +window.mainloop() + +# This code is contributed by genius_general diff --git a/src/llm/llm.go b/src/llm/llm.go index 91531f1..c3c740a 100644 --- a/src/llm/llm.go +++ b/src/llm/llm.go @@ -30,10 +30,11 @@ func InitLocalModel(urls []string) error { LLMNames = make([]string, 0, len(model2url)) LLMGroups = make(map[string]*LLMGroup, len(model2url)) + var models []string for model, urls := range model2url { - model = "local " + model + localModel := "local " + model g := &LLMGroup{ - name: model, + name: localModel, llm: make(chan llms.Model, len(urls)), local: true, } @@ -46,10 +47,11 @@ func InitLocalModel(urls []string) error { } - LLMGroups[model] = g - LLMNames = append(LLMNames, model) + LLMGroups[localModel] = g + LLMNames = append(LLMNames, localModel) + models = append(models, model) } - log.Info("load models", "models", strings.Join(LLMNames, ",")) + log.Info("load models", "models", strings.Join(models, ",")) return nil } diff --git a/src/workflow/exec.go b/src/workflow/exec.go index bdbfe69..ddde7a6 100644 --- a/src/workflow/exec.go +++ b/src/workflow/exec.go @@ -3,6 +3,7 @@ package workflow import ( "agent/src/message" "agent/src/prompt" + "agent/src/utils/log" ) @@ -24,6 +25,7 @@ func (task *Task) explain() error { } func (task *Task) docstring() error { + log.Info("call docstring") req := task.request.(*message.RequestExecDocstring) contents := prompt.MakeExecDocstring(req.Language, req.SelectedText.FilePath, req.SelectedText.Text)