用swift playground写个ios应用和大模型或者网站交互

Swift 复制代码
import SwiftUI


struct ContentView: View {

    @State private var textFieldText: String = ""

    @State private var outputText: String = "输出将会显示在这里"

    private let tip:String = "消息已发送,请等待"

    @State private var history:[String] = []

    var body: some View {

        ZStack {

            // 背景图片

            Image("图像资源") // 替换为你的背景图片名称

                .resizable()

                .scaledToFill()

                .edgesIgnoringSafeArea(.all) // 使背景图片覆盖整个屏幕

            

            VStack { 

                

                ScrollView { // 使用ScrollView使内容可滚动

                    Text(outputText)

                        .padding()

                        .background(Color.white.opacity(0.7))

                        .cornerRadius(8)

                        .font(.system(size: 30))

                        .border(Color.gray, width: 1)

                        .frame(width: 700) // 设置固定大小

                }

                .frame(width: 700, height: 200)

                

                  

                        

                

                

                HStack {

                    TextField("在这里输入...", text: $textFieldText)

                        .padding()

                        .textFieldStyle(RoundedBorderTextFieldStyle())

                        .autocapitalization(.none)

                        .disableAutocorrection(true)

                        .frame(width: 700)

                    

                    

                    Button(action: {

                        let sendmessage=textFieldText

                        textFieldText=""

                        outputText=tip

                        Task {

                            

                            if let result = await send_to_llm(message: sendmessage) {

                                history.append(result)

                                

                                outputText = history.joined(separator: "\n-------------------------------------------\n")

                                

                            } else {

                                outputText = "请求失败"

                            }

                        }

                    }) {

                        Text("提交")

                            .padding([.leading, .trailing], 10) // 调整左右内边距

                            .padding([.top, .bottom], 5) // 调整上下内边距

                            .background(Color.blue)

                            .foregroundColor(.white)

                            .cornerRadius(8)

                            

                    }

                    

                    .buttonStyle(BorderlessButtonStyle()) // 移除默认按钮样式

                }

                

                

            }  .padding(.top,450)

        }

      

        

        .foregroundColor(.black) // 设置文本颜色为黑色以确保在背景图片上清晰可见

    }

    

    

    

}

Swift 复制代码
import Foundation


// 定义请求的目标主机和路径

let host = 

let path = 


public func send_to_llm(message: String) async -> String? {

    // 定义请求头

    let headers: [String: String] = [

        

    ]

    

    // 定义请求体

    let body: [String: Any] = [

   

        ],

        "message": message

    ]

    

    // 将请求体转换为 JSON 数据

    guard let jsonData = try? JSONSerialization.data(withJSONObject: body, options: []) else {

        return ("Failed to serialize request body")

        

    }

    

    // 创建 URL

    guard let url = URL(string: "https://\(host)\(path)") else {

        return  ("Invalid URL")

         

    }

    

    // 创建 URLRequest

    var request = URLRequest(url: url)

    request.httpMethod = "POST"

    request.allHTTPHeaderFields = headers

    request.httpBody = jsonData

    

    do {

        // 使用 await 发送请求并获取数据

        let (data, _) = try await URLSession.shared.data(for: request)

        

        if let responseBody = String(data: data, encoding: .utf8) {

            print("Response Body: \(responseBody)")

            

            // 将String转换回Data,以便可以使用JSONSerialization

            if let jsonData = responseBody.data(using: .utf8),

               let jsonDict = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any],

               let messageDict = jsonDict["message"] as? [String: Any],

               let context = messageDict["content"] as? String {

                return context

            } else {

                return("Failed to parse JSON or key not found")

                

            }

        } else {

            return ("No response data")

             

        }

    } catch {

        return   ("Error: \(error)")

         

    }

}

Swift 复制代码
import SwiftUI


@main

struct MyApp: App {

    var body: some Scene {

        WindowGroup {

            ContentView()

        }

    }

}

这里可以设置打开控制台

测试接口可以在电脑端用foxapi,写个swift文件测

用swift playground 写一个和大模型或者任何网页端对话的应用

相关推荐
Digitally3 小时前
如何在电脑上轻松访问 iPhone 文件
ios·电脑·iphone
安和昂3 小时前
【iOS】YYModel源码解析
ios
pop_xiaoli3 小时前
UI学习—cell的复用和自定义cell
学习·ui·ios
大熊猫侯佩3 小时前
SwiftUI 中如何花样玩转 SF Symbols 符号动画和过渡特效
swiftui·swift·apple
大熊猫侯佩4 小时前
SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
swiftui·swift·apple
大熊猫侯佩4 小时前
使用令牌(Token)进一步优化 SwiftData 2.0 中历史记录追踪(History Trace)的使用
数据库·swift·apple
大熊猫侯佩4 小时前
SwiftUI 在 iOS 18 中的 ForEach 点击手势逻辑发生改变的解决
swiftui·swift·apple
Daniel_Coder5 小时前
Xcode 16.4 + iOS 18 系统运行时崩溃:___cxa_current_primary_exception 符号丢失的原因与解决方案
ios·xcode·ios 18·dyld·libc++abi
烈焰晴天8 小时前
使用ReactNative加载Svga动画支持三端【Android/IOS/Harmony】
android·react native·ios
sg_knight8 小时前
Flutter嵌入式开发实战 ——从树莓派到智能家居控制面板,打造工业级交互终端
android·前端·flutter·ios·智能家居·跨平台