这是项目中使用的对接百度文心一言后端代码
public class BaiduChatApi { private static String CHAT_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant"; static String inp = "{\"messages\": [\n" + " {\n" + " \"role\": \"%s\",\n" + " \"content\": \"%s\"\n" + " }\n" + " ]}"; public static String getAnswerBaiDu(String text) throws IOException{ CHAT_URL = CHAT_URL+"?access_token=xxxx"; URL u=new URL(CHAT_URL); HttpURLConnection conn=(HttpURLConnection) u.openConnection(); conn.setConnectTimeout(10*1000); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "application/json"); OutputStream out= conn.getOutputStream(); try{ String json=String.format(inp,"user",text); System.err.println(json); out.write(json.getBytes("UTF-8")); out.close(); out=null; InputStream in = conn.getInputStream(); if(conn.getResponseCode()==200){ //流转换为二进制数组,read()是转换方法 byte[] data = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = in.read(data)) != -1){ bos.write(data,0,len); } bos.close(); in.close(); conn.disconnect(); return new String(bos.toByteArray(), "UTF-8"); } else in.close(); }catch(Exception e){ e.printStackTrace(); } finally{ if(out!=null){ out.close(); } conn.disconnect(); } return null; } public static void main(String[] args) throws Exception { System.out.print("input>>"); String answer = getAnswerBaiDu("头疼怎么办"); System.err.println(answer); //使用ObjectMapper直接将String串转成对像 ObjectMapper objectMapper = new ObjectMapper(); BaiduChatModel chatModel = objectMapper.readValue(answer, BaiduChatModel.class); System.err.println(chatModel.toString()); System.err.println(chatModel.getResult()); } }
chaturltpubaiduappstemjsoncodeapi百度文心ivatoken