python实现文件ai智能行级编辑示例代码

代码语言:python

所属分类:人工智能

代码描述:python实现文件ai智能行级编辑示例代码,通过ai返回文件的行操作json来一行行修复新增、删除文件代码内容

代码标签: python 文件 ai 智能 行级 编辑 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import os
import json
import asyncio
from dotenv import load_dotenv
import difflib # 导入用于生成差异的库

# FastAPI 相关的导入
from fastapi import FastAPI
from fastapi.responses import HTMLResponse, StreamingResponse
from pydantic import BaseModel
from typing import List

# 使用 OpenAI 的异步客户端
from openai import AsyncOpenAI

# --- 1. 初始化和配置 ---
load_dotenv()
app = FastAPI()

try:
    openai_client = AsyncOpenAI(api_key="sk-",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
except KeyError:
    raise KeyError("API 密钥未设置!请在 .env 文件中设置 OPENAI_API_KEY。")

TARGET_FILE_PATH = "sample_code.py" # 确保这个文件存在

# --- 2. Pydantic 数据模型 ---
class EditRequest(BaseModel):
    user_request: str
    file_content: str

# --- 3. HTML 模板 (已修复前端 fetch 逻辑) ---
HTML_TEMPLATE = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 文件编辑器 (已修复)</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    <style>
        :root {
            --bg-color: #1e1e3f; --sidebar-bg: #2a2a52; --main-bg: #161633;
            --text-color: #dcdce0; --accent-color: #ff79c6; --accent-light: #f1fa8c;
            --border-color: #44475a; --success-color: #50fa7b; --error-color: #ff5555;
            --font-mono: 'Fira Code', 'Consolas', 'Monaco', monospace;
        }
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body { font-family: sans-serif; background-color: var(--bg-color); color: var(--text-color); display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; }
        #app { display: flex; width: 98vw; height: 95vh; max-width: 1600px; background-color: var(--sidebar-bg); border-radius: 12px; box-shadow: 0 10px 40px rgba(0,0,0,0.4); overflow: hidden; border: 1px solid var(--border-color); }
        
        .chat-panel { width: 35%; display: flex; flex-direction: column; border-right: 1px solid var(--border-color); }
        .chat-header { padding: 16px; border-bottom: 1px solid var(--border-color); font-size: 18px; font-weight: bold; }
        .chat-history { flex-grow: 1; padding: 16px; overflow-y: auto; }
        .message { display: flex; gap: 12px; margin-bottom: 20px; }
        .message.user { justify-content: flex-end; }
        .message .avatar { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
        .message.user .avatar { background: var(--accent-color); }
        .message.assistant .avatar { background: var(--success-color); color: #000; }
        .message .content { max-width: 85%; padding: 10px 14px; border-radius: 10px; line-height: 1.6; }
        .message.user .content { background: var(--accent-color); color: #000; }
        .message.assistant .content { background: var(--main-bg); }
        .message.assistant .content pre { background: #111; padding: 10px; border-radius: 6px; margin-top: 10px; white-space: pre-wrap; font-family: var(--font-mono); }
        .input-area { padding: 16px; border-top: 1px solid var(--border-color); }
        .input-wrapper { display: flex; gap: 10px; }
        .input-wrapper textarea { flex-grow: 1; background: var(--main-bg); borde.........完整代码请登录后点击上方下载按钮下载查看

网友评论0