前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让AI为你打工,腾讯混元大模型实战篇

让AI为你打工,腾讯混元大模型实战篇

原创
作者头像
GoBoy
修改2023-11-15 17:19:29
4670
修改2023-11-15 17:19:29
举报
文章被收录于专栏:Goboy

介绍

开局先上图

腾讯混元大模型

腾讯混元大模型

腾讯混元大模型 API 产品,可以实现对话沟通、内容生成、分析理解,可以广泛应用在智能客服、智能营销、角色扮演、广告文案创作、商品描述、剧本创作、简历生成、文章写作、代码生成、数据分析、内容分析等各类场景。

体验目标

目标:结合腾讯混元助手实现,表设计,数据库连接,代码增删查改的实现等功能。

操作教程

打开腾讯混元助手

定义角色

让人工助手,真正的成为你需要的助手,给混元助手一个新角色

例如:你是以为优秀的Java软件开发人员。您的工作是使用 Java语言 和 SpringBoot 框架开发应用程序和架构代码。下面我将为你提供一些关于 Java Web 应用程序要求的具体信息,请您根据具体信息,给出解决办法。

提出问题

请我提供一个基于SpringBoot的框架,包含pom.xml和yml文件的配置,需要连接MySQL数据库。

混元回答

当然可以!以下是一个基于SpringBoot的框架,包含pom.xml和application.yml文件的配置,用于连接MySQL数据库。

  • pom.xml
代码语言:html
复制
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.6.1</version>
       <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <groupId>com.example</groupId>
   <artifactId>spring-boot-mysql</artifactId>
   <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-mysql</name>
   <description>Spring Boot with MySQL</description>
   <properties>
        <java.version>1.8</java.version>
    </properties>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
        </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
        </dependency>
    </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • application.yml
代码语言:yaml
复制
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
    username: your_database_username
    password: your_database_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true

请将your_database_nameyour_database_usernameyour_database_password替换为您的MySQL数据库的实际信息。这个配置将帮助您的SpringBoot项目连接到MySQL数据库。


提出要求

请帮我基于MySQL设计user用户表,根据上述的SpringBoot框架,采用MVC分层的结构,实现User表的增删查改操作。

混元回答

首先,我们需要创建一个MySQL数据库表来存储用户信息。以下是一个简单的user表结构:

代码语言:sql
复制
CREATE TABLE `user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `email` VARCHAR(255) NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username_UNIQUE` (`username`),
  UNIQUE KEY `email_UNIQUE` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

接下来,我们将使用Spring Boot框架创建一个简单的MVC应用程序。首先,我们需要创建一个实体类User来表示用户:

代码语言:java
复制
package com.example.demo.entity;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username", nullable = false, unique = true)
    private String username;

    @Column(name = "password", nullable = false)
    private String password;

    @Column(name = "email", nullable = false, unique = true)
    private String email;

    @Column(name = "created_at", nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private LocalDateTime createdAt;

    @Column(name = "updated_at", nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
    private LocalDateTime updatedAt;

    // Getters and setters
}

然后,我们需要创建一个UserRepository接口来处理数据库操作:

代码语言:java
复制
package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

接下来,我们将创建一个UserService类来处理业务逻辑:

代码语言:java
复制
package com.example.demo.service;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public Optional<User> getUserById(Long id) {
        return userRepository.findById(id);
    }

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public User updateUser(Long id, User user) {
        User existingUser = userRepository.findById(id).orElse(null);
        if (existingUser != null) {
            existingUser.setUsername(user.getUsername());
            existingUser.setPassword(user.getPassword());
            existingUser.setEmail(user.getEmail());
            return userRepository.save(existingUser);
        }
        return null;
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

最后,我们需要创建一个UserController类来处理HTTP请求:

代码语言:java
复制
package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        return userService.getUserById(id).map(ResponseEntity::ok).orElse(ResponseEntity.notFound().build());
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
        User updatedUser = userService.updateUser(id, user);
        if (updatedUser != null) {
            return ResponseEntity.ok(updatedUser);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return ResponseEntity.noContent().build();
    }
}

现在,您已经创建了一个基于MySQL的用户表,并实现了User表的增删查改操作。您可以运行Spring Boot应用程序并使用HTTP请求来测试这些操作。


至此为止,我们期待混元助手给出的解决办法结束了。


错误排查

发现问题

提出问题

有时候我们在使用过程中,描述问题不准确可能会造成,混元助手没有准确的定位到问题所在。

示例:

解决办法:

我们启动程序后可能会有些错误提示信息,我们讲错误信息作为输入:

混元助手根据提供的错误信息,给出解决方案;

混元回答

这个错误表明在尝试保存或更新一个实体(com.example.demo.entity.User)时,一个非空属性(createdAt)被设置为了空值或者实体处于一个未保存的状态。为了解决这个问题,请确保在保存实体之前设置了所有非空属性,并且实体已经被初始化。

以下是一些建议:

在创建 User 实例时,确保为 createdAt 属性设置了一个有效值。例如:

代码语言:java
复制
User user = new User();

user.setName("John Doe");

user.setEmail("john.doe@example.com");

user.setCreatedAt(new Date()); // 设置创建时间

如果你使用的是 JPA 和 Hibernate,可以考虑使用 @CreationTimestamp 注解自动设置创建时间。例如:

代码语言:java
复制
@Entity

public class User {

    // ... 其他属性



    @CreationTimestamp

    @Column(name = "created\_at", nullable = false)

    private Date createdAt;



    // ... getter 和 setter

}

如果你正在使用 Spring Data JPA,确保在保存实体之前调用 save() 方法。例如:

代码语言:java
复制
@Service

public class UserService {

    @Autowired

    private UserRepository userRepository;



    public User createUser(User user) {

        // 设置创建时间

        user.setCreatedAt(new Date());



        // 保存实体

        return userRepository.save(user);

    }

}

如果你正在使用 Hibernate 的 Session 对象,确保在调用 persist() 方法之前设置了所有必要的属性。例如:

代码语言:java
复制
Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();



User user = new User();

user.setName("John Doe");

user.setEmail("john.doe@example.com");

user.setCreatedAt(new Date()); // 设置创建时间



session.persist(user);

transaction.commit();

session.close();

通过确保所有非空属性都有值,并且实体已经被初始化,你应该可以解决这个问题。如果问题仍然存在,请提供更多关于你的实体类和数据访问代码的信息,以便我能更好地帮助你。


我们根据混元助手给的答案,对程序进行调整,调整内容如下:

修改User实体:

代码语言:javascript
复制
package com.example.demo.entity;

import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@Data
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username", nullable = false, unique = true)
    private String username;

    @Column(name = "password", nullable = false)
    private String password;

    @Column(name = "email", nullable = false, unique = true)
    private String email;

//    @Column(name = "created_at", nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    @CreationTimestamp
    @Column(name = "created_at", nullable = false)
    private LocalDateTime createdAt;

//    @Column(name = "updated_at", nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
    @CreationTimestamp
    @Column(name = "updated_at", nullable = false)
    private LocalDateTime updatedAt;

    // Getters and setters
}

代码测试

简单的接口测试

在上诉的过程中,会出现一些代码没有补全的情况,手动补全即可。

测试结果

增删查改的接口测试结果如下

整体总结

混元助手是一款非常优秀的大模型,可以提高我们工作效率,同样,我们也要学会使用大模型的正确姿势,对问题的描述也要足够的准确,这样大模型才能更好的为我们解决问题。

迄今为止 AI 工具的出现主要还是为了便利人类,而不是代替人类。加以学习利用,使其成为我们的优秀的工作助手。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 开局先上图
      • 腾讯混元大模型
      • 体验目标
      • 操作教程
        • 打开腾讯混元助手
          • 定义角色
            • 提出问题
              • 混元回答
            • 提出要求
              • 混元回答
          • 错误排查
            • 发现问题
              • 提出问题
              • 混元回答
          • 代码测试
            • 简单的接口测试
              • 测试结果
              • 整体总结
              相关产品与服务
              腾讯混元大模型
              腾讯混元大模型(Tencent Hunyuan)是由腾讯研发的大语言模型,具备强大的中文创作能力,复杂语境下的逻辑推理能力,以及可靠的任务执行能力。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档