This commit is contained in:
mmrbnjd
2025-08-29 19:01:13 +03:30
parent 564429be01
commit 49304f93a2
6 changed files with 127 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ package aia;
service aiAssistance { service aiAssistance {
rpc SendQuestion (aiaRequest) returns (aiaReply); rpc SendQuestion (aiaRequest) returns (aiaReply);
rpc imageAnalize (aiaRequest) returns (aiaReply);
} }
message aiaRequest { message aiaRequest {

View File

@@ -27,9 +27,10 @@ namespace AIAss.Protos {
"CglhaWEucHJvdG8SA2FpYSJdCgphaWFSZXF1ZXN0EhAKCHF1ZXN0aW9uGAEg", "CglhaWEucHJvdG8SA2FpYSJdCgphaWFSZXF1ZXN0EhAKCHF1ZXN0aW9uGAEg",
"ASgJEg8KB3Byb21wdHMYAiABKAkSDQoFbW9kZWwYAyABKAkSEAoIYXBpdG9r", "ASgJEg8KB3Byb21wdHMYAiABKAkSDQoFbW9kZWwYAyABKAkSEAoIYXBpdG9r",
"ZW4YBCABKAkSCwoDdXJsGAUgASgJIhsKCGFpYVJlcGx5Eg8KB21lc3NhZ2UY", "ZW4YBCABKAkSCwoDdXJsGAUgASgJIhsKCGFpYVJlcGx5Eg8KB21lc3NhZ2UY",
"ASABKAkyPgoMYWlBc3Npc3RhbmNlEi4KDFNlbmRRdWVzdGlvbhIPLmFpYS5h", "ASABKAkybgoMYWlBc3Npc3RhbmNlEi4KDFNlbmRRdWVzdGlvbhIPLmFpYS5h",
"aWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Qg+qAgxBSUFzcy5Qcm90b3NiBnBy", "aWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Ei4KDGltYWdlQW5hbGl6ZRIPLmFp",
"b3RvMw==")); "YS5haWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Qg+qAgxBSUFzcy5Qcm90b3Ni",
"BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { }, new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {

View File

@@ -58,6 +58,14 @@ namespace AIAss.Protos {
__Marshaller_aia_aiaRequest, __Marshaller_aia_aiaRequest,
__Marshaller_aia_aiaReply); __Marshaller_aia_aiaReply);
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
static readonly grpc::Method<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply> __Method_imageAnalize = new grpc::Method<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(
grpc::MethodType.Unary,
__ServiceName,
"imageAnalize",
__Marshaller_aia_aiaRequest,
__Marshaller_aia_aiaReply);
/// <summary>Service descriptor</summary> /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{ {
@@ -74,6 +82,12 @@ namespace AIAss.Protos {
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
} }
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::System.Threading.Tasks.Task<global::AIAss.Protos.aiaReply> imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::ServerCallContext context)
{
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
} }
/// <summary>Client for aiAssistance</summary> /// <summary>Client for aiAssistance</summary>
@@ -123,6 +137,26 @@ namespace AIAss.Protos {
{ {
return CallInvoker.AsyncUnaryCall(__Method_SendQuestion, null, options, request); return CallInvoker.AsyncUnaryCall(__Method_SendQuestion, null, options, request);
} }
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::AIAss.Protos.aiaReply imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
{
return imageAnalize(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::AIAss.Protos.aiaReply imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_imageAnalize, null, options, request);
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual grpc::AsyncUnaryCall<global::AIAss.Protos.aiaReply> imageAnalizeAsync(global::AIAss.Protos.aiaRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
{
return imageAnalizeAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual grpc::AsyncUnaryCall<global::AIAss.Protos.aiaReply> imageAnalizeAsync(global::AIAss.Protos.aiaRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_imageAnalize, null, options, request);
}
/// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary> /// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary>
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
protected override aiAssistanceClient NewInstance(ClientBaseConfiguration configuration) protected override aiAssistanceClient NewInstance(ClientBaseConfiguration configuration)
@@ -137,7 +171,8 @@ namespace AIAss.Protos {
public static grpc::ServerServiceDefinition BindService(aiAssistanceBase serviceImpl) public static grpc::ServerServiceDefinition BindService(aiAssistanceBase serviceImpl)
{ {
return grpc::ServerServiceDefinition.CreateBuilder() return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_SendQuestion, serviceImpl.SendQuestion).Build(); .AddMethod(__Method_SendQuestion, serviceImpl.SendQuestion)
.AddMethod(__Method_imageAnalize, serviceImpl.imageAnalize).Build();
} }
/// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. /// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic.
@@ -148,6 +183,7 @@ namespace AIAss.Protos {
public static void BindService(grpc::ServiceBinderBase serviceBinder, aiAssistanceBase serviceImpl) public static void BindService(grpc::ServiceBinderBase serviceBinder, aiAssistanceBase serviceImpl)
{ {
serviceBinder.AddMethod(__Method_SendQuestion, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.SendQuestion)); serviceBinder.AddMethod(__Method_SendQuestion, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.SendQuestion));
serviceBinder.AddMethod(__Method_imageAnalize, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.imageAnalize));
} }
} }

View File

@@ -38,6 +38,50 @@ namespace AIAss.Services;
reponse="خطا در ارتباط سرور ai"; reponse="خطا در ارتباط سرور ai";
} }
return new aiaReply
{
Message = $" {reponse}"
};
}
public async override Task<aiaReply> imageAnalize(aiaRequest request, ServerCallContext context)
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", request.Apitoken);
var content = new
{
model = request.Model,
messages = new object[]
{
new {
role = "user",
content = new object[]
{
new { type = "text", text =request.Prompts},
new {
type = "image_url",
image_url = new {
url = $"data:image/jpeg;base64,{request.Question}"
}
}
}
}
}
};
var response = await client.PostAsync(request.Url,
new StringContent(JsonSerializer.Serialize(content), Encoding.UTF8, "application/json"));
string reponse = "";
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
using var doc = JsonDocument.Parse(json);
reponse = doc.RootElement.GetProperty("choices")[0].GetProperty("message").GetProperty("content").GetString();
}
else
{
reponse = "خطا در ارتباط سرور ai";
}
return new aiaReply return new aiaReply
{ {
Message = $" {reponse}" Message = $" {reponse}"

View File

@@ -27,9 +27,10 @@ namespace AIAss.Protos {
"CglhaWEucHJvdG8SA2FpYSJdCgphaWFSZXF1ZXN0EhAKCHF1ZXN0aW9uGAEg", "CglhaWEucHJvdG8SA2FpYSJdCgphaWFSZXF1ZXN0EhAKCHF1ZXN0aW9uGAEg",
"ASgJEg8KB3Byb21wdHMYAiABKAkSDQoFbW9kZWwYAyABKAkSEAoIYXBpdG9r", "ASgJEg8KB3Byb21wdHMYAiABKAkSDQoFbW9kZWwYAyABKAkSEAoIYXBpdG9r",
"ZW4YBCABKAkSCwoDdXJsGAUgASgJIhsKCGFpYVJlcGx5Eg8KB21lc3NhZ2UY", "ZW4YBCABKAkSCwoDdXJsGAUgASgJIhsKCGFpYVJlcGx5Eg8KB21lc3NhZ2UY",
"ASABKAkyPgoMYWlBc3Npc3RhbmNlEi4KDFNlbmRRdWVzdGlvbhIPLmFpYS5h", "ASABKAkybgoMYWlBc3Npc3RhbmNlEi4KDFNlbmRRdWVzdGlvbhIPLmFpYS5h",
"aWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Qg+qAgxBSUFzcy5Qcm90b3NiBnBy", "aWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Ei4KDGltYWdlQW5hbGl6ZRIPLmFp",
"b3RvMw==")); "YS5haWFSZXF1ZXN0Gg0uYWlhLmFpYVJlcGx5Qg+qAgxBSUFzcy5Qcm90b3Ni",
"BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { }, new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {

View File

@@ -58,6 +58,14 @@ namespace AIAss.Protos {
__Marshaller_aia_aiaRequest, __Marshaller_aia_aiaRequest,
__Marshaller_aia_aiaReply); __Marshaller_aia_aiaReply);
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
static readonly grpc::Method<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply> __Method_imageAnalize = new grpc::Method<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(
grpc::MethodType.Unary,
__ServiceName,
"imageAnalize",
__Marshaller_aia_aiaRequest,
__Marshaller_aia_aiaReply);
/// <summary>Service descriptor</summary> /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{ {
@@ -74,6 +82,12 @@ namespace AIAss.Protos {
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
} }
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::System.Threading.Tasks.Task<global::AIAss.Protos.aiaReply> imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::ServerCallContext context)
{
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
} }
/// <summary>Client for aiAssistance</summary> /// <summary>Client for aiAssistance</summary>
@@ -123,6 +137,26 @@ namespace AIAss.Protos {
{ {
return CallInvoker.AsyncUnaryCall(__Method_SendQuestion, null, options, request); return CallInvoker.AsyncUnaryCall(__Method_SendQuestion, null, options, request);
} }
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::AIAss.Protos.aiaReply imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
{
return imageAnalize(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual global::AIAss.Protos.aiaReply imageAnalize(global::AIAss.Protos.aiaRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_imageAnalize, null, options, request);
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual grpc::AsyncUnaryCall<global::AIAss.Protos.aiaReply> imageAnalizeAsync(global::AIAss.Protos.aiaRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
{
return imageAnalizeAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
public virtual grpc::AsyncUnaryCall<global::AIAss.Protos.aiaReply> imageAnalizeAsync(global::AIAss.Protos.aiaRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_imageAnalize, null, options, request);
}
/// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary> /// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary>
[global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
protected override aiAssistanceClient NewInstance(ClientBaseConfiguration configuration) protected override aiAssistanceClient NewInstance(ClientBaseConfiguration configuration)
@@ -137,7 +171,8 @@ namespace AIAss.Protos {
public static grpc::ServerServiceDefinition BindService(aiAssistanceBase serviceImpl) public static grpc::ServerServiceDefinition BindService(aiAssistanceBase serviceImpl)
{ {
return grpc::ServerServiceDefinition.CreateBuilder() return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_SendQuestion, serviceImpl.SendQuestion).Build(); .AddMethod(__Method_SendQuestion, serviceImpl.SendQuestion)
.AddMethod(__Method_imageAnalize, serviceImpl.imageAnalize).Build();
} }
/// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. /// <summary>Register service method with a service binder with or without implementation. Useful when customizing the service binding logic.
@@ -148,6 +183,7 @@ namespace AIAss.Protos {
public static void BindService(grpc::ServiceBinderBase serviceBinder, aiAssistanceBase serviceImpl) public static void BindService(grpc::ServiceBinderBase serviceBinder, aiAssistanceBase serviceImpl)
{ {
serviceBinder.AddMethod(__Method_SendQuestion, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.SendQuestion)); serviceBinder.AddMethod(__Method_SendQuestion, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.SendQuestion));
serviceBinder.AddMethod(__Method_imageAnalize, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::AIAss.Protos.aiaRequest, global::AIAss.Protos.aiaReply>(serviceImpl.imageAnalize));
} }
} }