DevExtremeai เป็นห้องสมุดที่มีการใช้งาน API ของ OpenAI ทั้งหมดอย่างสมบูรณ์และสมบูรณ์ ห้องสมุดนี้สอดคล้องกับสเปค OpenAI อย่างเต็มที่และยังใช้การตอบสนองต่อข้อผิดพลาดของ OpenAI มันใช้งานง่ายมากกับ ASP.NET Core และได้รับการสนับสนุนอย่างเต็มที่จากการฉีดพึ่งพา (ด้วยรหัสบรรทัดเดียวเป็นรูปแบบมาตรฐาน ASP.NET) นอกจากนี้ยังใช้งานง่ายในห้องสมุดโดยไม่ต้องฉีดพึ่งพา (ดูตัวอย่างด้านล่าง)
โปรดทราบว่านี่เป็นห้องสมุด OpenAPI ที่ไม่เป็นทางการ (ไม่ใช่ บริษัท OpenAI)
| สร้าง | สถานะ | เวอร์ชันปัจจุบัน |
|---|---|---|
| CI |
ในการใช้ไลบรารีนี้คุณต้องใช้คีย์ OpenAI API (และรหัสองค์กรที่เป็นตัวเลือก) ในการรับคีย์ API คุณต้องลงทะเบียนบัญชีของคุณไปที่ openai.com หลังจากลงทะเบียนไปที่บัญชี OpenAI ของคุณและค้นหา 'มุมมอง API Keys' ในหน้านี้คุณสามารถสร้าง Apikey ของคุณได้ จากหน้าบัญชีของคุณคุณสามารถค้นหาหน้าการตั้งค่าที่วางรหัสองค์กรของคุณ
คุณสามารถใช้ไลบรารีนี้ผ่าน Nuget Package DevExtremeai
โปรด ทราบว่าห้องสมุดนี้สนับสนุนการกำหนดค่าไอคอนสุทธิและการฉีดพึ่งพาการพึ่งพาเพื่อให้สามารถอ่าน Apikey และองค์กรจากพวกเขาแทนการเข้ารหัสอย่างหนักในซอร์สโค้ด (โปรดอย่ายากรหัส apikey และรหัสองค์กรในซอร์สโค้ดและอย่าผลักดันให้พวกเขาไปที่ GIT หรือที่เก็บแหล่งที่มาใด ๆ )
ห้องสมุดนี้เป็นไปตามข้อกำหนดของ OpenAI อย่างเต็มที่และโมเดลวัตถุนั้นเหมือนกันกับ OpenAI (พร้อมลักษณะเฉพาะของ Dotnet) ไลบรารีนี้ยังใช้รหัสข้อผิดพลาด OpenAI ที่ไม่ได้บันทึกไว้ในการอ้างอิง API ของ OpenAI
ติดตั้ง Nuget Package DevExtremeai ใน program.cs เพิ่มสิ่งนี้โดยใช้:
using DevExtremeAI . AspNet ; สิ่งนี้โดยใช้ช่วยให้คุณใช้ส่วนขยายบริการ ASP.NET ด้วยตัวสร้าง WebApplication ตอนนี้คุณสามารถใช้วิธี AddDevExtremeAI() ที่ลงทะเบียนทุกสิ่งที่คุณต้องการด้วยการฉีดพึ่งพา
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI ( ) ; overload AddDevExtremeAI() นี้มองหา Apikey ใน AppSettings.json หรือ AppSettings.development.json เพื่อให้คุณสามารถหลีกเลี่ยงการเข้ารหัสฮาร์ดโค้ดในซอร์สโค้ด ฉันขอแนะนำให้คุณใช้ความลับการกระทำของ GitHub
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI < DevExtremeAI . Settings . CurrentEnvironmentData > ( ) ;ด้วยวิธีนี้คีย์ API และรหัสองค์กรถูกอ่านจากตัวแปรสภาพแวดล้อมที่ชื่อว่า OpenAI_ORGANIZATION และ OPENAI_API_KEY
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI < MyEnvironmentReader > ( ) ; ในตัวอย่างข้างต้นคุณสามารถใช้ Overload AddDevExtremeAI<TEnvironment> ที่ต้องใช้ประเภทวัตถุที่ใช้ DevExtremeAI.Settings.IAIEnvironment อินเทอร์เฟซเพื่อให้คุณสามารถอ่าน apikey หรือรหัสองค์กรจากที่คุณต้องการ (การใช้งาน IAIEnvironment ของคุณจะถูกใช้ใน Singleton Way)
ในที่สุดคุณสามารถใช้ Overload AddDevExtremeAI(string apiKey, string? organization) และส่งผ่าน Apikey และค่ารหัสองค์กรที่อ่านจากที่ที่คุณต้องการ (โปรดอ่านจากที่ที่คุณต้องการ
นั่นคือทั้งหมด! จากนี้คุณสามารถใช้ OpenAI ในโครงการ ASP.NET ของคุณผ่านการฉีดพึ่งพา
ตอนนี้คุณสามารถประกาศตัวสร้างของคอนโทรลเลอร์และเพื่อนของคุณด้วย DevExtremeAI.OpenAIClient.IOpenAIAPIClient เช่นนี้:
private DevExtremeAI . OpenAIClient . IOpenAIAPIClient _openAIApiClient ;
public TestAIController ( DevExtremeAI . OpenAIClient . IOpenAIAPIClient openAIApiClient )
{
_openAIApiClient = openAIApiClient ;
}ตัวอย่างของการใช้ iopenaiapiclient ในคอนโทรลเลอร์หรือ apicontroller อาจเป็น:
// GET api/<TestAIController>/5
[ HttpGet ( " {id} " ) ]
public async Task < string > Get ( int id )
{
var chat = new CreateChatCompletionRequest ( ) ;
chat . Model = " gpt-3.5-turbo-1106 " ;
string prompt = $" Is the number { id } even or odd? " ;
chat . AddMessage ( new ChatCompletionUserContentMessage ( ) { Content = prompt } ) ;
var response = await _openAIApiClient . CreateChatCompletionAsync ( chat ) ;
return $" { prompt } -> { response ? . OpenAIResponse ? . Choices [ 0 ] ? . Message ? . Content } " ;
}หมายเหตุ คุณสามารถค้นหาเอกสารที่สมบูรณ์ของ API และ DTO ใน Intellisense ตัวอย่างด้านล่างหรือการอ้างอิง API อย่างเป็นทางการของ OpenAI เพราะเหมือนกัน
หากคุณใช้ภายนอก ASP.NET Core หรือไม่มี HostBuilder หรือการฉีดพึ่งพาเช่นในแอปพลิเคชันคอนโซลหรือ Dotnet Library คุณสามารถใช้วิธีการจากโรงงาน
ในสถานการณ์นี้คุณต้องใช้แพ็คเกจ NUGET เดียวกัน
หลังจากติดตั้งแพ็คเกจนี้คุณสามารถใช้ไลบรารี Devextremeai
ใน program.cs โฆษณานี้โดยใช้:
using DevExtremeAI . OpenAIClient ; ตอนนี้คุณสามารถใช้ OpenAIClientFactory
ภายในห้องสมุดหรือวิธีการหลักของแอปพลิเคชันคอนโซลคุณสามารถสร้าง instace ของ IOpenAIAPIClient เช่นในตัวอย่างนี้:
internal class Program
{
static async Task Main ( string [ ] args )
{
var openAIClient = OpenAIClientFactory . CreateInstance ( ) ; //create an instance o IOpenAIAPIClient
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRoleStringContentMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Hello! " ,
} ) ;
var response = await openAIClient . CreateChatCompletionAsync ( createCompletionRequest ) ;
Console . WriteLine ( response . OpenAIResponse . Choices [ 0 ] . Message . Content ) ;
}
} วิธีการโรงงาน ( CreateInstance ) ในตัวอย่างข้างต้นใช้การโอเวอร์โหลดโดยไม่มีอาร์กิวเมนต์การโอเวอร์โหลดนี้จะมองหา apikeyvalue และองค์กร Ind ใน appsettings.json หรือ appsettings.development.json ชื่อคีย์ AppSettings จะต้องเป็น OpenAI_API_KEY และ OPENAI_ORGANIZATION
var openAIClient = OpenAIClientFactory . CreateInstance < CurrentEnvironmentData > ( ) ; //create an instance o IOpenAIAPIClient var openAIClient = OpenAIClientFactory . CreateInstance ( new CurrentEnvironmentData ( ) ) ; //create an instance o IOpenAIAPIClient ด้วยวิธีนี้คีย์ API และรหัสองค์กรถูกอ่านจากตัวแปรสภาพแวดล้อมที่ชื่อว่า OpenAI_ORGANIZATION และ OPENAI_API_KEY
var openAIClient = OpenAIClientFactory . CreateInstance < MyEnvironmentValueReader > ( ) ; //create an instance o IOpenAIAPIClient คุณสามารถใช้การโอเวอร์โหลดที่ต้องใช้อินสแตนซ์ของ DevExtremeAI.Settings.IAIEnvironment ที่นำมาใช้ด้วยตัวเองเพื่อให้คุณสามารถอ่านค่า apikey และรหัสองค์กรจากที่คุณต้องการ
นอกจากนี้คุณยังสามารถใช้การโอเวอร์โหลดที่ reqire apikey value และรหัสองค์กรเป็นอาร์กิวเมนต์ (แต่คำอ้อนวอนไม่ได้ทำฮาร์ดโค้ดในซอร์สโค้ด)
อย่างไรก็ตามอย่าใช้รหัสฮาร์ดโฟชัน Apikey และรหัสองค์กรในไฟล์ใด ๆ (ไฟล์ซอร์สโค้ดหรือไฟล์ AppSettings) อย่าผลักเข้าไปในแหล่งเก็บข้อมูลแหล่งที่มาของ AppSettings.development.json และใช้ความลับการกระทำของ GitHub
ทุกวิธีของ DevExtremeAI.OpenAIClient.IOpenAIAPIClient นั้นเหมือนกันกับ openai ดังนั้นคุณสามารถใช้ไฟล์
การอ้างอิง OpenAI API อย่างเป็นทางการ การร้องขอวัตถุ DTO มีการอธิบายด้วยเอกสาร. NET มาตรฐานเพื่อให้คุณสามารถใช้ Intellisese ทุกวิธีของ IOpenAIAPIClient มีอยู่ในการทดสอบการรวม XUNIT ดังนั้นคุณสามารถดูได้ที่นั่น (ไดเรกทอรี devextremeailibtest)
การตอบสนองทุกครั้งเป็นของ DevExtremeAI.OpenAIDTO.ResponseDTO<T> ประเภท ประเภทนี้มีสามคุณสมบัติ:
ErrorResponse ที่มีรายละเอียดข้อผิดพลาดที่ส่งคืนโดย OpenAI API ในกรณีที่มีปัญหาHasError ที่เป็นจริงหากเกิดข้อผิดพลาดเป็นอย่างอื่นเป็นเท็จOpenAIResponse ที่เหมือนกันกับการตอบสนองของ OpenAIการสนับสนุนรุ่นนี้สนับสนุน OpenAI API และ Object Models ร้องเรียนไปยัง GPT-4 และ GPT-3.5-turbo ในเวอร์ชัน OpenAI API นี้ API บางตัวเลิกใช้แล้วและโมเดลวัตถุบางอย่างเปลี่ยนไป คุณสามารถดูโมเดลวัตถุที่อัปเดตได้ใน UML Schema สำหรับแชท API ตอนนี้คุณสามารถใช้วัตถุที่สืบทอดมาจากคลาสพื้นฐาน 'ChatCompletionRolerequestMessage'
Object ChatcompletionRolestringContentMessage ใช้สำหรับความเข้ากันได้ย้อนหลังเท่านั้น ด้วยวัตถุนี้คุณสามารถตั้งค่าคุณสมบัติบทบาทเช่นรุ่น Old Object Model
ตัวอย่างเช่นรหัสเก่าเช่นนี้:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRequestMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Who are you? "
} ) ;สามารถอัปเดตด้วยวิธีนี้:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRoleStringContentMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Who are you? "
} ) ;การเปลี่ยนแปลงคือ:
หากต้องการอัปเดตการอัปเดตเวอร์ชันล่าสุดอย่างสมบูรณ์จะต้องทำด้วยวิธีนี้:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionUserContentMessage ( )
{
Content = " Who are you? "
} ) ;การเปลี่ยนแปลงคือ:
ได้รับการคุ้มครองทุกประเภท OpenAI API:
คุณสามารถค้นหาตัวอย่างของ API ทุกโครงการในโครงการทดสอบ หากคุณต้องการคุณสามารถมีส่วนร่วมในการขยายไฟล์ readme นี้ด้วยตัวอย่าง;)
ลิขสิทธิ์ (c) 2023 Andrea Piccioni
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีการ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์ในการใช้สำเนาดัดแปลงผสานเผยแพร่เผยแพร่
ประกาศลิขสิทธิ์ข้างต้นและการแจ้งเตือนการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์